>我有一个表格
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)