我有一个脑死亡的时刻......我有两个表格描述:
CREATE TABLE table_a (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
UNIQUE (name))
CREATE TABLE table_b (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
a_key INTEGER NOT NULL,
other_stuff VARCHAR(255) NOT NULL,
FOREIGN KEY(a_key) REFERENCES table_a(id)
ON DELETE CASCADE)
Run Code Online (Sandbox Code Playgroud)
如何从table_a中选择table_b.a_key中没有条目的所有行?
Luk*_*keH 11
SELECT table_a.*
FROM table_a
LEFT JOIN table_b
ON table_a.id = table_b.a_key
WHERE table_b.id IS NULL
Run Code Online (Sandbox Code Playgroud)
天真地,您可以使用 NOT EXISTS 子查询:
SELECT A.*
FROM table_a A
WHERE NOT EXISTS (
SELECT 1
FROM table_b B
WHERE B.a_key = A.id
)
Run Code Online (Sandbox Code Playgroud)
您也可以尝试外连接。但他们通常会在内部优化相同的查询。
归档时间: |
|
查看次数: |
2341 次 |
最近记录: |