為什麼我的 MySQL WHERE IN 查詢會遺失具有多個符合值的行?

Barbara Streisand
發布: 2024-11-05 20:29:02
原創
467 人瀏覽過

Why Does My MySQL WHERE IN Query Miss Rows with Multiple Matching Values?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板