[英]SQL LEFT JOIN for all records of first table and matched records of another table
我有 3 張桌子。
帶有id、name等列的表賣家。
表客戶,如id、name等。
具有seller_id、customer_id、“friends”、“pending_request”等友誼狀態的表連接。
現在我想獲取所有不是特定客戶朋友的賣家。
所以我嘗試使用連接表的左連接從賣家表中獲取記錄,條件狀態不是“朋友”
我嘗試了以下查詢,但沒有幫助我。 我也嘗試了其他查詢,但沒有幫助。
SELECT * FROM `seller` LEFT JOIN `connections` ON seller.user_id = connections.user_id WHERE customer_id = 10 AND request_status NOT LIKE "friends"
這是我想要結果的參考屏幕。 就像對於特定客戶一樣,所有不是朋友或請求的賣家都處於待處理狀態。
為customer_id = 10
加入'friends'
類型的connections
,並在WHERE
子句中檢查connections.user_id
是否為NULL
,即沒有加入任何內容。
SELECT *
FROM seller
LEFT JOIN connections
ON seller.user_id = connections.user_id
AND connections.customer_id = 10
AND connections.request_status = 'friends'
WHERE connections.user_id IS NULL;
或者使用相關的子查詢,獲得與NOT EXISTS
的連接。
SELECT *
FROM seller s
WHERE NOT EXISTS (SELECT *
FROM connections c
WHERE c.user_id = s.user_id
AND c.customer_id = 10
AND c.request_status = 'friends');
嘗試這個:
SELECT * FROM `seller` LEFT JOIN `connections` ON seller.user_id = connections.user_id WHERE customer_id = 10 AND (request_status NOT LIKE "friends"
or request_status is null)
或這個:
SELECT * FROM `seller` LEFT JOIN `connections` ON seller.user_id = connections.user_id WHERE customer_id = 10 AND IFNULL(request_status,"other") NOT LIKE "friends"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.