类似于这一问题的问题已经问了几次,但在我的(简单的)用例中却没有看到。在DISTINCT
中使用INNER JOIN
值。
问题描述:
我有两个表Table A
和Table B
。它们可以通过变量ID
连接。每个ID
可能同时出现在Table A
和Table B
的多行中。
我想对INNER JOIN
中出现的Table A
的不同值Table B
ID
和Table B
进行选择,并选择{{1} }和Table A
并与Table A.ID
中的某些条件匹配。
我想要的东西:
我想确保Table B
每行仅获得一份副本,其中Table A
与满足Table A.ID
的{{1}}匹配。
我想做什么:
Table B.ID
此外:
作为另一个(非常愚蠢的)约束,我无法说出正在使用的SQL标准,因为我正在通过Stata的[some condition]
命令在数据库上执行SQL查询,因此我无从得知变量名称和“它确实接受SQL查询”这一事实(<-这是我所掌握的信息的范围。)
答案 0 :(得分:0)
如果要让a
中的所有行与b
中的ID匹配,请使用exists
:
select a.*
from a
where exists (select 1 from b where b.id = a.id);
尝试使用join
只会使事情复杂化,因为它既过滤并生成重复项。