我有两个表,它们都有相同的两列:功能ID和语言。我想提取语言已更改为功能ID的记录。但问题是,每个功能ID都有多种语言。我的表看起来像:
表1
Feature ID | Language
------------------------
001 | 'en'
001 | 'es'
001 | 'pt'
002 | 'es'
002 | 'fr'
表2
Feature ID | Language
-----------------------
001 | 'es'
001 | 'en
001 | 'fr'
002 | 'fr'
002 | 'es'
我最初尝试的是:
SELECT a.feature_id, b.feature_id, a.language, b.language
FROM table 1 a FULL OUTER JOIN table 2 b on a.feature_id = b.feature_id
WHERE a.language <> b.language
但这并没有像我希望的那样完成。我注意到的结果如下:
002 | 002 | 'fr' | 'es'
002 | 002 | 'es' | 'fr'
SQL中是否有办法减轻这种情况?
感谢。
答案 0 :(得分:2)
SELECT a.feature_id, b.feature_id, a.language, b.language
FROM [table 1] a FULL OUTER JOIN [table 2] b on a.feature_id = b.feature_id
and a.language = b.language
WHERE a.feature_id is null or b.feature_id is null
将其更改为语言和功能的完全外部联接,然后将where子句更改为不匹配的行。
答案 1 :(得分:0)
您可以尝试在featureID和Language上执行TABLE1 LEFT JOIN TABLE2。然后,如果TABLE2中的语言语言为NULL,则它会被更改。
答案 2 :(得分:0)
试试这个:
SELECT a.feature_id, b.feature_id, a.language, b.language
FROM table 1 a FULL OUTER JOIN table 2 b on a.feature_id = b.feature_id
WHERE a.feature_id || a.language <> b.feature_id || b.language
或者:
SELECT a.feature_id, b.feature_id, a.language, b.language
FROM table 1 a LEFT OUTER JOIN table 2 b
on a.feature_id || a.language <> b.feature_id || b.language
WHERE b.feature_id is NULL