从表中选择所有数据,其中值 = 某物


select all data from table where value = something

>我有一个表格

map1

带列

cham1 , cham2 , cham3 , cham4 , cham5 , cham6 , cham7 , cham8 , cham9 

有些列的值为 100,有些列的值为 200

我想选择值为 100 或值为 200 的列

SQL 查询应如下所示:

select cham1,cham2,cham3,cham4,cham5 from map1 where value of  = 100 ;

我希望从表列中选择值为 100 的列

你可能想要这样的东西:

SELECT *
FROM map1
WHERE cham1 IN (100, 200)
  OR cham2 IN (100, 200)
  OR cham3 IN (100, 200)
  OR cham4 IN (100, 200)
  OR cham5 IN (100, 200)
;

这个查询听起来像你存储在 5 列 ( cham1 ..cham5 ) 应存储在单个列中的值。或者,最有可能的是,它们需要(在同一列中)保留在单独的表中。

这应该有效 -

SELECT *
FROM `map1`
WHERE `cham1` IN (100, 200)
OR `cham2` IN (100, 200)
OR `cham3` IN (100, 200)
OR `cham4` IN (100, 200)
OR `cham5` IN (100, 200)

"想要选择列"是什么意思?列名?还是该列的值?

这将给出逗号分隔的列名,具有 100 或 200

SELECT 
   CONCAT(
      CASE WHEN cham1 IN (100,200) THEN 'cham1,' ELSE '' END, 
      CASE WHEN cham2 IN (100,200) THEN 'cham2,' ELSE '' END, 
            . . . 
      CASE WHEN cham5 IN (100,200) THEN 'cham5,' ELSE '' END
) FROM MAP1

这将仅选择 100 秒和 200 秒

SELECT 
      cham1 = CASE WHEN cham1 IN (100,200) THEN cham1 ELSE NULL END, 
      cham2 = CASE WHEN cham2 IN (100,200) THEN cham2 ELSE NULL END, 
            . . . 
      cham5 = CASE WHEN cham5 IN (100,200) THEN cham5 ELSE NULL END
FROM MAP1

如果您只想限制具有 100 或 200 的行,您可以添加where子句

WHERE cham1 IN (100, 200)
OR cham2 IN (100, 200)
OR cham3 IN (100, 200)
OR cham4 IN (100, 200)
OR cham5 IN (100, 200)