首页 > 解决方案 > 带唯一值的 SQL 内连接

问题描述

DISTINCT关于在 an 中使用值的类似问题INNER JOIN已被问过几次,但我没有看到我的(简单)用例。

问题描述:

我有两张桌子Table ATable B. 它们可以通过变量连接起来ID。每个都ID可能出现在 和 中的多行Table ATable B

我想在INNER JOIN Table A其中出现Table B的不同值上选择所有行,其中出现匹配某些条件的行。 IDTable BTable ATable A.IDTable 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 查询,”(<- 这是我所拥有的信息的范围)。

标签: sql

解决方案


如果您希望其中的所有行a与 中的 id 匹配,请b使用exists

select a.*
from a
where exists (select 1 from b where b.id = a.id);

尝试使用join只是使事情复杂化,因为它既过滤又生成重复。


推荐阅读