正如title所说,我想拒绝行,所以我不会创建重复的行。第一步是不联接第二个表中有更多行的值。
如果需要,下面是一个示例:表a:
aa |bb |
---|----|
1 |111 |
2 |222 |
表h:
hh |kk |
---|----|
1 |111 |
2 |111 |
3 |222 |
使用正常左联接:
SELECT
*
FROM a
LEFT JOIN h
ON a.bb = h.kk
;
我得到:
aa |bb |hh |kk |
---|----|---|----|
1 |111 |1 |111 |
1 |111 |2 |111 |
2 |222 |3 |222 |
我想去掉前两行,其中aa=1。
第二步是针对另一个查询,可能在某些情况下,表a在哪里,我将只筛选出表b中超过2行的行。因此,我想创建表c,其中我将有:
aa |bb |
---|----|
1 |111 |
有人能帮帮我吗?非常感谢。
只获取1:1
加入
SELECT a.aa,h.hh,h.kk FROM a
LEFT JOIN h ON a.bb = h.kk
GROUP BY bb HAVING COUNT(kk)=1
只获取1:n
加入
SELECT a.aa,h.hh,h.kk FROM a
LEFT JOIN h ON a.bb = h.kk
GROUP BY bb HAVING COUNT(kk)>1