2012-10-26 58 views
0

有了這個where子句:MySQL的:解決方法,如果()返回> 1行

第一和第二佔位符?可以有值:1 || NULL
的季軍動態添加(陣列)

IF(ISNULL(?),1,xy.id) IN 
    (IF(ISNULL(?),1,(SELECT x.id FROM x WHERE name IN (?)))) 

,因爲我想,如果發送的數據是空的子句總是返回true我需要這種類型的ISNULL檢查。基本上如果數據是空的子句將是1 IN 1,如果它不爲空查找corespondent ID,但if()函數限制我只返回1個結果(不是一組)。除了動態構建整個查詢在PHP中,我有什麼選項?

回答

1

您可以在where條款做到這一點

WHERE (ISNULL(?) OR xy.id IN (SELECT x.id FROM x WHERE name IN (?))) 
相關問題