簡體   English   中英

如果在另一個表中找不到匹配的記錄,如何從一個表中選擇記錄

[英]How to SELECT records from One table If Matching Record In Not Found In Other Table

暈,我正在嘗試讓查詢從一個表中選擇記錄,說“ deal_asking”,前提是在第二個表“ deal_unpluged”中找不到匹配的記錄。 這就是我做的(下面)使用LEFT JOIN選擇記錄,然后在PHP端過濾記錄的方法。 我正在尋找解決此問題的Mysql查詢方式的方法,請幫助..

提前致謝...

SELECT DA.das_id, DU.das_id_fk 
FROM deal_asking DA 
LEFT JOIN deal_unpluged DU ON DA.das_id= DU.das_id_fk 
WHERE department='8'
ORDER BY das_id ASC LIMIT 10 OFFSET 0 

只需將其添加到您的WHERE子句中:

AND DU.das_id_fk IS NULL

說我有以下兩個表:

+-------------------------+   +-------------------------+
| Person                  |   | Pet                     |
+----------+--------------+   +-------------------------+
| PersonID | INT(11)      |   | PetID    | INT(11)      |
| Name     | VARCHAR(255) |   | PersonID | INT(11)      |
+----------+--------------+   | Name     | VARCHAR(255) |
                              +----------+--------------+

我的表包含以下數據:

+------------------------+    +---------------------------+
| Person                 |    | Pet                       |
+----------+-------------+    +-------+----------+--------+
| PersonID | Name        |    | PetID | PersonID | Name   |
+----------+-------------+    +-------+----------+--------+
| 1        | Sean        |    | 5     | 1        | Lucy   |
| 2        | Javier      |    | 6     | 1        | Cooper |
| 3        | tradebel123 |    | 7     | 2        | Fluffy |
+----------+-------------+    +-------+----------+--------+

現在,如果我想要所有Person的列表:

SELECT pr.PersonID, pr.Name
FROM
    Person pr

如果我想要一個擁有寵物的Person列表(包括他們的寵物名稱):

SELECT pr.PersonID, pr.Name, pt.Name AS PetName
FROM
    Person pr
    INNER JOIN Pet pt ON pr.PersonID = pt.PersonID

如果我想要一個沒有寵物的Person列表:

SELECT pr.PersonID, pr.`Name`
FROM
    Person pr
    LEFT JOIN Pet pt ON pr.PersonID = pt.PersonID
WHERE
    pt.`PetID` IS NULL

如果我要列出所有Person以及他們的寵物(即使他們沒有寵物)的列表,請執行以下操作:

SELECT
    pr.PersonID,
    pr.Name,
    COALESCE(pt.Name, '<No Pet>') AS PetName
FROM
    Person pr
    LEFT JOIN Pet pt ON pr.PersonID = pt.PersonID

如果我想要一個Person的列表以及它們擁有多少寵物的計數:

SELECT pr.PersonID, pr.Name, COUNT(pt.PetID) AS NumPets
FROM
    Person pr
    LEFT JOIN Pet pt ON pr.PersonID = pt.PersonID
GROUP BY
    pr.PersonID, pr.Name

與上述相同,但不顯示包含0個寵物的Person

SELECT pr.PersonID, pr.Name, COUNT(pt.PetID) AS NumPets
FROM
    Person pr
    LEFT JOIN Pet pt ON pr.PersonID = pt.PersonID
GROUP BY
    pr.PersonID, pr.Name
HAVING COUNT(pt.PetID) > 0

暫無
暫無

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

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