sql - 带唯一值的 SQL 内连接
问题描述
DISTINCT
关于在 an 中使用值的类似问题INNER JOIN
已被问过几次,但我没有看到我的(简单)用例。
问题描述:
我有两张桌子Table A
和Table B
. 它们可以通过变量连接起来ID
。每个都ID
可能出现在 和 中的多行Table A
上Table B
。
我想在INNER JOIN
Table A
其中出现Table B
的不同值上选择所有行,其中出现匹配某些条件的行。 ID
Table B
Table A
Table A.ID
Table B
我想要的是:
我想确保我只得到每行的一个副本,Table A
匹配Table A.ID
的 aTable B.ID
满足[some condition]
.
我想做的事:
SELECT * FROM TABLE A
INNER JOIN (
SELECT DISTINCT ID FROM TABLE B WHERE [some condition]
) ON TABLE A.ID=TABLE B.ID
此外:
作为进一步的(非常愚蠢的)约束,我不能说任何关于正在使用的 SQL 标准,因为我通过 Stata 的odbc load
命令在数据库上执行 SQL 查询,除了变量名和“它确实接受 SQL 查询,”(<- 这是我所拥有的信息的范围)。
解决方案
如果您希望其中的所有行a
与 中的 id 匹配,请b
使用exists
:
select a.*
from a
where exists (select 1 from b where b.id = a.id);
尝试使用join
只是使事情复杂化,因为它既过滤又生成重复。
推荐阅读
- python - 如何检查 Kivy UrlRequest Get 是否在 Android 上运行?
- c# - IQueryable/IEnumerable 应用用法:使用 Azure CosmosDB 针对数据库的数据库查询请求
- vue.js - 通过单击 vuetify 项目中的另一个按钮触发按钮单击?
- java - 应用程序在测试 ir 时不断崩溃并且无法运行
- javascript - Babel 不包括 IE 11 的相关 polyfill
- bash - 在不关闭 MacOS 的情况下重启终端
- unity3d - 将 Unity 预制件/场景反序列化为键/值对的嵌套哈希表
- git - 不记得以前还原的合并过程的 Git 命令
- apache-spark - Spark:零输入的任务需要永远完成
- python-3.x - 将json响应(来自google sheet API的'spreadsheet.value.get')转换为具有正确列标题的pandas数据框