我正在尝试搜索与1
的值匹配的多个列columns: 1S, 2S, 3S, 4S
数据库看起来像这样
aa, 0, 0, 1, 0
ab, 1, 0, 1, 0
ac, 1, 0, 0, 0
ad, 1, 1, 1, 0
我想查询返回1行,只显示值是否存在的列。示例应该返回
1, 1, 1, 0
第1S,2S和3S列为1,因为存在值为1的行.4S为0,因为没有值为1的行。
我尝试了这个,但是我收到了一个mysql错误#1242 - 子查询返回超过1行
SELECT * FROM `show` AS s
JOIN (`make` AS v, zip AS p)
ON (s.make = v.id AND s.zip = p.zip)
WHERE (
SELECT CONCAT_WS(' AND ', CONCAT(column_name, ' = 1 '))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'show'
AND table_schema = 'DB_NAME'
AND column_name NOT IN ('id')
)
答案 0 :(得分:2)
好的,这个怎么样:
SELECT
IF(SUM(1S) > 0, 1, 0),
IF(SUM(2S) > 0, 1, 0),
IF(SUM(3S) > 0, 1, 0),
IF(SUM(4S) > 0, 1, 0)
FROM `show`