簡體   English   中英

從單列中選擇多個值

[英]Select Multiple Values From Single Column

我想從數據庫表中的單個列中選擇多個值,這些值等於多個值。 我希望所有這些值匹配,否則它應該不返回任何行。 我不想使用“IN”,因為它等於“OR”。

以下是它應該做什么的基本模型, 但它需要是動態的,因為我希望將它與PDO語句一起使用。 如果數據庫只包含id的1和2,則它應該失敗,即不返回任何行。

SELECT
id
FROM
reports
WHERE
id=1 AND id=2 AND id=3

我有如下的當前代碼,錯誤地返回零行:

SELECT id,title
FROM reports
WHERE id IN (1,2)
GROUP BY title 
HAVING COUNT(DISTINCT id) = 2

我目前的表格結構如下: http//www.sqlfiddle.com/#!2 /ce4aa / 1

您必須使用HAVING COUNT(id) = 3來確保所選行具有所有三個id。 就像是:

SELECT *
FROM reports
WHERE id = 1 OR id = 2 OR id = 3 -- Or id IN(1, 2, 3)
GROUP BY SomeOtherField
HAVING COUNT(DISTINCT id) = 3;

要么:

SELECT *
FROM reports
WHERE SomeOtherField IN (SELECT SomeOtherField 
                         FROM reports
                         WHERE id = 1 or id = 2 -- Or id IN(1, 2, 3)
                         GROUP BY SomeOtherField
                         HAVING COUNT(DISTINCT id) = 3
                        );

請注意:您必須使用GROUP BY SomeOtherField ,其中SomeOtherField是除id之外的其他字段,因為如果您使用HAVING COUNT(id) GROUP BY id ,則不會獲得任何記錄,因為COUNT(id)將始終為= 1。

編輯:修復WHERE子句, OR代替AND代替。

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM