2013-07-08 82 views
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.

我試圖值NO行這一點,但我得到一個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

見正常化 – Strawberry

回答

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` 
+0

酷!謝謝@ FSou1 –