![](/img/trans.png)
[英]MySql: How to select all joined rows between two tables and all rows from first that satisfy condition using single query?
[英]Mysql: How to return just the main rows from two tables if condition from joined table doesnt match?
也許有人可以幫助我。 我們有兩個表:
company_project可能具有多個具有不同類型的事件(event_type_id)。 如果一個項目有一個特殊事件,即使它有其他事件,我也要從結果中刪除它。
這不起作用:
SELECT cp.id, ce.event_type_id
FROM companies_projects cp
LEFT JOIN companies_events ce ON ce.project_id = cp.id
WHERE ce.event_type_id != 219
GROUP BY cp.id
表結構如下:
**company_projects**
id
project_type_id
company_id
...
**company_events**
id
project_id
event_type_id
...
我只想忽略具有特殊事件的項目,即使它還有其他事件。
您需要排除項目記錄,而不是事件,因此:
SELECT cp.id, ce.event_type_id
FROM companies_projects cp
LEFT JOIN companies_events ce ON ce.project_id = cp.id
WHERE cp.id NOT IN (
SELECT cp.id FROM companies_projects cp
LEFT JOIN companies_events ce ON ce.project_id = cp.id
WHERE ce.event_type_id = 219
)
GROUP BY cp.id
SELECT cp.id, ce.event_type_id
FROM companies_projects cp
LEFT JOIN companies_events ce
ON ce.project_id = cp.id
WHERE NOT EXISTS(SELECT NULL
FROM companies_events
WHERE project_id = cp.id
AND event_type_id = 219)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.