1

我正在尝试搜索与 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, 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')

                           )
4

1 回答 1

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`
于 2013-07-08T09:11:50.480 回答