MySQL连接表,其中所有左记录都在右

蒂莫002

我需要从表A中获得匹配的记录,这些记录也位于表B中。但是我不知道是否可以在一个查询中做到这一点。

表A

id | order_id | title
----------------------------------
 1 | 1114     | Product 1
 2 | 1115     | Product 1
 3 | 1115     | Product 2
 4 | 1116     | Product 1
 5 | 1117     | Product 3
 6 | 1118     | Product 4
 7 | 1118     | Product 5

表B

id | order_id | a_id | title
----------------------------------
 1 | 2221     |    1 | Product 1
 2 | 2222     |    2 | Product 1
 3 | 2222     |    3 | Product 2
 4 | 2223     |    7 | Product 5

现在,我需要order_id表A中的所有值,其中所有产品也在表B中。所以这将导致:

1114
1115

1116失败,因为没有b.a_id4
1117失败,因为没有b.a_id5
1118失败,因为两个6AND7都不在b.a_id

我试过了INNER JOIN,但这也会返回1118我也尝试了LEFT JOINwith WHERE b.a_id IS NULL,但这是完全相反的。所以我尝试了一个RIGHT JOIN,但是也返回了1118

请参阅此SQL Fiddle

我希望我明确了我的目标,并且很好奇是否可以通过一个查询来管理。

戴夫·里克斯(Dave Rix)

它不是完美的,但是它确实会通过SQL Fiddle为您的现有数据返回正确的结果。也许您可以以此为起点?

SELECT a.order_id, count(distinct a.id) as aCount, count(distinct b.a_id) as bCount
FROM a
LEFT JOIN b ON a.id = b.a_id
GROUP BY a.order_id
HAVING aCount = bCount;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL-连接记录,其中所有子记录均具有值

来自分类Dev

选择具有一对多关系的记录,其中所有记录都在列表中

来自分类Dev

MySQL从左表返回所有记录,但右表中有匹配项的记录除外

来自分类Dev

MySQL左连接,根据左表最大ID从左表获取所有右表列和2列

来自分类Dev

左外连接,从左边查找所有在右表中没有出现的,mysql

来自分类Dev

MySQL使用Join列出左表中的所有记录

来自分类Dev

Mysql左连接,条件在右表中

来自分类Dev

Mysql 左连接,左表中没有重复的值,其中的最后一个值

来自分类Dev

即使表 B 上没有记录,也使用左连接获取所有记录

来自分类Dev

左外连接使用从右表中排除记录的位置

来自分类Dev

SELECT *,其中所有integer []单元格都在一组值中

来自分类Dev

向量归档,其中所有向量都在寻找原点 (0, 0)

来自分类Dev

MySQL-从右表中的每个组获取左表中的所有行

来自分类Dev

mysql左连接/右连接3个表

来自分类Dev

当右表中存在 NULL 时返回左表中的所有结果,当右表中不存在空时返回内连接的结果

来自分类Dev

为什么左连接没有给出所有左表值和其他表的空值,其中条件为假?

来自分类Dev

获取表中所有记录的父母/子女

来自分类Dev

SQL 从表中选择所有值,其中所有列都填充了数据

来自分类Dev

查询以查找 A 中所有在 B 中没有连接记录的特定条件的记录

来自分类Dev

如何连接表,包括左表中的所有ID,但在给定某些where子句的情况下仅显示右表中的信息

来自分类Dev

如果右表没有记录,则左联接查询不返回左表记录

来自分类Dev

带有右表的where子句的左连接(必须从右返回NULL)-Oracle

来自分类Dev

带有右表的where子句的左连接(必须从右返回NULL)-Oracle

来自分类Dev

计算其中所有等距的坐标

来自分类Dev

MSSQL 其中所有或给定值

来自分类Dev

如何使用SQL检索表中所有记录的所有3级子节点?

来自分类Dev

如何删除所有记录数据库中所有表

来自分类Dev

如何更新数据库中所有表的所有记录?

来自分类Dev

左连接与右表中的位置

Related 相关文章

  1. 1

    MySQL-连接记录,其中所有子记录均具有值

  2. 2

    选择具有一对多关系的记录,其中所有记录都在列表中

  3. 3

    MySQL从左表返回所有记录,但右表中有匹配项的记录除外

  4. 4

    MySQL左连接,根据左表最大ID从左表获取所有右表列和2列

  5. 5

    左外连接,从左边查找所有在右表中没有出现的,mysql

  6. 6

    MySQL使用Join列出左表中的所有记录

  7. 7

    Mysql左连接,条件在右表中

  8. 8

    Mysql 左连接,左表中没有重复的值,其中的最后一个值

  9. 9

    即使表 B 上没有记录,也使用左连接获取所有记录

  10. 10

    左外连接使用从右表中排除记录的位置

  11. 11

    SELECT *,其中所有integer []单元格都在一组值中

  12. 12

    向量归档,其中所有向量都在寻找原点 (0, 0)

  13. 13

    MySQL-从右表中的每个组获取左表中的所有行

  14. 14

    mysql左连接/右连接3个表

  15. 15

    当右表中存在 NULL 时返回左表中的所有结果,当右表中不存在空时返回内连接的结果

  16. 16

    为什么左连接没有给出所有左表值和其他表的空值,其中条件为假?

  17. 17

    获取表中所有记录的父母/子女

  18. 18

    SQL 从表中选择所有值,其中所有列都填充了数据

  19. 19

    查询以查找 A 中所有在 B 中没有连接记录的特定条件的记录

  20. 20

    如何连接表,包括左表中的所有ID,但在给定某些where子句的情况下仅显示右表中的信息

  21. 21

    如果右表没有记录,则左联接查询不返回左表记录

  22. 22

    带有右表的where子句的左连接(必须从右返回NULL)-Oracle

  23. 23

    带有右表的where子句的左连接(必须从右返回NULL)-Oracle

  24. 24

    计算其中所有等距的坐标

  25. 25

    MSSQL 其中所有或给定值

  26. 26

    如何使用SQL检索表中所有记录的所有3级子节点?

  27. 27

    如何删除所有记录数据库中所有表

  28. 28

    如何更新数据库中所有表的所有记录?

  29. 29

    左连接与右表中的位置

热门标签

归档