[英]Mysql data from table with condition
我有兩個mysql表,如下所示:
聯絡人
---------------
id | name | email
---------------
1 | Jack | jack@test.com
2 | John | john@test.com
3 | Liz | liz@test.com
5 | Jack | jack@test.com
6 | Liz | liz@test.com
7 | Mike | mike@test.com
8 | Jack | jack@test.com
購買
-------------------
id | contact_id | paid
-------------------
1 | 3 | true
2 | 5 | true
我需要進行購買的唯一的contact_id和其他未購買的獨特的contact_id。
因此,最終結果將為:
-------------------
id | name | email
------------------
2 | John | john@test.com
3 | Liz | liz@test.com
5 | Jack | jack@test.com
7 | Mike | mike@test.com
我嘗試查詢為:
SELECT * FROM contacts LEFT JOIN purchases ON contacts.id = purchases.user_id
但這並沒有為我提供所需的唯一行。 我嘗試了DISTINCT的幾種組合,但未按要求得到結果。
你有嘗試過嗎?
SELECT COALESCE(purchases.contact_id, contacts.id) as id, name, email
FROM contacts
LEFT JOIN purchases ON contacts.id = purchases.user_id
GROUP BY name
這樣的東西應該可以工作,但是它的性能是“?”。
SELECT * FROM contacts WHERE id IN (
SELECT DISTINCT id as i FROM purchases
UNION
SELECT DISTINCT contact_id as i FROM purchases
)
GROUP BY id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.