我为标题道歉,但我忘记了它在SQL术语中实际调用的内容。
正在使用此查询:
SELECT DISTINCT a.col1, a.col2,a.col3,c.col1, c.col2
FROM table1 a
LEFT JOIN table2 c ON a.col1 = c.col3
WHERE a.col2 = '038CQH'
我得到一个大约56000行的结果,但当我使用时检查:
SELECT a.col1, a.col2,a.col3 FROM table1 a where a.col2='038CQH'
我只有4行。
答案 0 :(得分:2)
这是因为table1中的4条记录根据table2中的记录连接到table2中的许多记录,其中col3与table1中的col1匹配。顺便说一句 - 这些都是可怕的专栏名称。
答案 1 :(得分:1)
左连接(left join
实际上是left outer join
)。这意味着 - 获取table1中的所有记录和table2中的所有记录,但是a.col1!= c.col3,在所有table2列上放置空值。
也许您需要一个内部联接?它只会添加table2中的列,其中a.col1 = c.col3
答案 2 :(得分:0)
稍微不同的方法 - 重新运行查询:
SELECT a.col1, a.col2,a.col3 FROM table1 a where a.col2='038CQH'
记下a.col1的四个值,返回为[a1],[a2],[a3]和[a4]。
然后尝试对table2运行以下查询:
SELECT DISTINCT c.col1, c.col2
table2 c WHERE c.col3 IN ([a1], [a2], [a3], [a4])
(其中[a1]等已被先前提到的值替换。)