我有两个名为ServiceIOD和ServiceSubs的表,它们之间只有一个名为ShortCode的列是常见的。因此,当我尝试连接这两个表来获得某些给定短代码的组合结果时,它没有给我正确的输出。可能是因为ShortCode列保存了两个表的冗余数据。例如,我们可以在两个表中多次找到shortcode = 36788多行。我到目前为止尝试的查询如下:
SELECT distinct serviceIOD.keyword,
serviceIOD.shortcode
FROM serviceIOD
INNER JOIN serviceSubs
ON serviceIOD.shortcode = serviceSubs.shortcode
AND serviceIOD.shortcode = 36788
非常感谢大家给予的任何帮助。谢谢。
更新:
错误输出的说明:当我通过此查询加入shortcode
36788时,我总共得到24行但是当我在shortocde
36788的两个表中单独查询时,我得到24行ServicesIOD
表和ServicesSubs
表的3行。共27行。但是当我加入上面的查询时,我只得到24行。
答案 0 :(得分:0)
尝试此代码。通常UNION避免重复条目。
(SELECT serviceIOD.keyword,
serviceIOD.shortcode
FROM serviceIOD)
UNION (select * from serviceSubs)
WHERE serviceIOD.shortcode = 36788
答案 1 :(得分:0)
Inner Join
和shortcode
36788,过滤两个表之间匹配的行,并且知道您已经在serviceSubs
表上进行了测试并得到{ {1}}行,加入的结果也是3
行,但是您在3
和select distinct
上执行了keyword
,因此此查询会查找shortcode
值为36788的独特keyword
,这就是您获得shortcode
行的原因。
如果我错了,请告诉我,我可以将其删除。
答案 2 :(得分:0)
我已通过以下查询解决了这个问题:
SELECT serviceIOD.keyword,
serviceIOD.shortcode
FROM serviceIOD where shortcode = 36788
UNION select serviceSubs.keyword,
serviceSubs.shortcode from serviceSubs where shortcode = 36788
感谢大家花了宝贵的时间帮我解决问题。特别感谢@Optimuskck,因为我从他建议的答案中得到了答案。