Gre*_*ina 5 mysql sql select distinct left-join
我正在尝试获取company_id
没有公司级别注释的's列表。但是,该公司可能有位置级别的注释。
company
-------------------------
company_id name deleted
1 Foo 0
2 Bar 0
3 Baz 0
location
-----------------------
location_id company_id
6 1
7 2
8 3
note
-----------------------------------------
note_id company_id location_id deleted
10 2 6 0 // location-level note
11 1 7 0 // location-level note
12 null 8 0 // location-level note
13 2 null 0 // company-level note
Run Code Online (Sandbox Code Playgroud)
我希望我的结果表是这样的:
company_id name
1 Foo
3 Baz
Run Code Online (Sandbox Code Playgroud)
更新
Foo
/company_id = 1
没有公司级别的注释,因为该注释还有一个location_id
,这使其成为位置级别的注释。公司级注释是仅链接到公司(而不是位置)的注释。
更新结束
我试过做这样的事情,但它返回一个空集,所以我不确定它是否有效,并且没有任何公司没有公司级别的注释或者我做错了什么。
SELECT DISTINCT
c.company_id,
c.name
FROM company AS c
LEFT JOIN note AS n
ON c.company_id = n.company_id
WHERE
c.deleted = 0 AND
n.deleted = 0 AND
n.location_id IS NOT NULL AND
n.location_id != 0 AND
c.company_id = (SELECT MAX(company_id) FROM company)
Run Code Online (Sandbox Code Playgroud)
SELECT
company_id,
name
FROM company
WHERE
deleted = 0 AND
company_id NOT IN (
SELECT DISTINCT
c.company_id
FROM company AS c
INNER JOIN note AS n
ON c.company_id = n.company_id
WHERE (
n.deleted = 0 AND
(n.location_id IS NULL OR
n.location_id = 0)
)
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15602 次 |
最近记录: |