SQL:查找具有非唯一特征ID的两个表之间的差异?
我有两个表,它们都有相同的两列:featureid和language。我想提取功能ID的语言已更改的记录。但问题是,每个功能ID都有多种语言。我的表如下所示: 表1SQL:查找具有非唯一特征ID的两个表之间的差异?,sql,Sql,我有两个表,它们都有相同的两列:featureid和language。我想提取功能ID的语言已更改的记录。但问题是,每个功能ID都有多种语言。我的表如下所示: 表1 Feature ID | Language ------------------------ 001 | 'en' 001 | 'es' 001 | 'pt' 002 | 'es' 002 | 'fr' 表2 Feature ID | Langua
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
SQL中有没有办法缓解这种情况
谢谢。您可以尝试在featureID和Language上执行表1左键连接表2。然后,如果表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
WHERE a.feature_id || a.language <> b.feature_id || b.language
选择a.feature\u id、b.feature\u id、a.language、b.language
从表1 a到a.feature_id=b.feature_id上的完全外部联接表2 b
其中a.feature|id | a.language b.feature|id | b.language
或:
选择a.feature\u id、b.feature\u id、a.language、b.language
从表1 a到表2 b
关于a.feature|id | a.language b.feature|id | b.language
其中,b.feature_id为空
将其更改为语言和功能的完全外部联接,然后是where子句,以筛选到不匹配的行。您使用的是哪种DBMS?
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
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