Mat*_*ick 15 mysql sql select one-to-many
我有一个简单的一对多关系.我想只在父母至少有一个孩子时从父母那里选择行.因此,如果没有子节点,则不在结果集中返回父行.
例如.
Parent:
+--+---------+
|id| text |
+--+---------+
| 1| Blah |
| 2| Blah2 |
| 3| Blah3 |
+--+---------+
Children
+--+------+-------+
|id|parent| other |
+--+------+-------+
| 1| 1 | blah |
| 2| 1 | blah2 |
| 3| 2 | blah3 |
+--+------+-------+
Run Code Online (Sandbox Code Playgroud)
我希望结果如下:
+----+------+
|p.id|p.text|
+----+------+
| 1 | Blah |
| 2 | Blah2|
+----+------+
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 19
你可以这样做EXISTS
,像这样:
SELECT *
FROM Parent p
WHERE EXISTS (SELECT 1
FROM Chilren c
WHERE c.Parent = p.id)
Run Code Online (Sandbox Code Playgroud)
或者使用IN
这样的:
SELECT *
FROM Parent p
WHERE p.id IN (SELECT c.Parent
FROM Chilren c)
Run Code Online (Sandbox Code Playgroud)
And*_*mar 12
一个inner join
只返回匹配两个表的行:
select distinct p.*
from Parent p
inner join Children c on c.parent = p.id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8651 次 |
最近记录: |