MySQL WHERE IN 查詢多個匹配值
嘗試使用WHERE IN () 子句從MySQL 表中檢索資料進行比有表多個值,您可能會遇到不傳回具有多個符合值的行的問題。此行為可能會令人困惑,因為您可能會期望傳回具有任何指定值的所有行。
說明
WHERE IN () 子句用於根據指定的列值是否與括號內提供的任何值匹配來選擇行。但是,當一行有多個符合值(例如1 和3)時,查詢將轉換為一系列OR 條件:
<code class="sql">SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';</code>
這表示只有與其中一個指定值完全匹配的行才會被查詢。
解決方案
要解決這個問題,可以考慮以下方法:
方法一:使用SET類型
將id 列的資料類型變更為SET 可以讓您在一行中儲存多個值。然後,您可以使用FIND_IN_SET() 函數查詢包含特定值的行:
<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
此查詢將傳回id 欄位包含值「1」的所有行,無論是否存在其他值
方法2:使用UNION 或子查詢
另一種方法是使用UNION 或子查詢來組合多個查詢,每個查詢都符合指定值之一:
<code class="sql">SELECT * FROM table WHERE id = 1 UNION SELECT * FROM table WHERE id = 3;</code>
此查詢將傳回與1 或3 相符的所有行,無論是否存在其他值。
以上是為什麼我的 MySQL WHERE IN 查詢會遺失具有多個符合值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!