Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:查找具有非唯一特征ID的两个表之间的差异?_Sql - Fatal编程技术网

SQL:查找具有非唯一特征ID的两个表之间的差异?

SQL:查找具有非唯一特征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

我有两个表,它们都有相同的两列:featureid和language。我想提取功能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
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