mysql - MySQL在匹配其他表或其中不存在时查找ID
问题描述
我有两个表,我想要一个查询来显示一个表中与第二个表匹配或根本不存在的记录。换句话说,如果记录存在于表 B 中并且与条件不匹配,则不显示它。
TABLE A TABLE B
ID VAL ID AID BVAL
--------- ----------------
1 v1 1 2 B1
2 v2 2 3 B2
3 v3
我试过这个查询:
SELECT ta.id, ta.val, tb.bval
FROM table_a ta
LEFT JOIN table_b tb ON ta.id = tb.AID AND tb.BVAL = 'B1'
目标是只获得这些行:
ID VAL BVAL
------------------
1 v1 NULL
2 v2 B1
但显然,通过这个查询,我得到了所有表 A。
谢谢你的时间!
解决方案
我找到了解决方案,我发布它以防其他人遇到同样的问题。
SELECT ta.id, ta.val, tb.bval
FROM table_a ta
LEFT JOIN table_b tb ON ta.id = tb.AID
GROUP BY ta.id, ta.val, tb.bval
HAVING tb.BVAL = 'B1' OR tb.BVAL IS NULL
推荐阅读
- javascript - WebView:元素类型无效:需要一个字符串
- python - chromedriver selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素
- r - R 中从输入向量 x,y 和用户定义的函数 f(x,y) 生成输出矩阵 Z 的简单方法
- docker - JIB - 是否可以看到在幕后创建的 dockerfile jib?
- c# - Web api,通过 Postman 调用 api 中的任何函数 - 不起作用
- python - Django模型中的自定义ID AutoField
- xslt - XSLT 2.0 通过分组创建计数器
- reactjs - 材质 UI 输入很小
- amazon-dynamodb - DynamoDB,哪个更好:多个小查询还是一个大查询?
- bash - 当我对文件的位使用 tac 和/或 rev 时会发生什么?