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 です。値が 1 の行がないため、4S は 0 です。

これを試しましたが、mysql エラー#1242 - サブクエリが複数の行を返します

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