![](/img/trans.png)
[英]How to select distinct records from two tables, combine into one column, and eliminate all records that exist in another table using SQLite?
[英]HIVE: How to only select distinct values from two columns in two tables that does not exist in a third table?
我有三張桌子。
t1
Name | Version | ...
A 1
A 2
B 1
B 3
t2
Name | Version | ...
A 1
A 3
B 2
B 3
t3
Name | Version | ...
A 1
A 2
我想 select 表 1 和表 2 中不存在於表 3 中的不同名稱和版本值。
我當前的 SELECT 查詢從表 1 和表 2 中選擇不同的值
SELECT c.name,c.version FROM
(SELECT name,version from t1
UNION
SELECT name,version from t2
) c
這返回
result
Name | Version
A 1
A 2
A 3
B 1
B 2
B 3
我想要什么
wanted result
Name | Version
A 3
B 1
B 2
B 3
如何正確修改 HQL 查詢以獲得此結果? 感謝您提供的任何幫助。
僅將 LEFT JOIN 與 t3 表 + 過濾器未連接的行一起使用:
SELECT c.name,c.version
FROM
(SELECT name,version from t1
UNION
SELECT name,version from t2
) c
LEFT JOIN t3 on c.name=t3.name and c.version=t3.version
WHERE t3.name is NULL --do not exist in t3 table
;
另一種可能的方法是使用 NOT EXISTS:
SELECT c.name,c.version
FROM
(SELECT name,version from t1
UNION
SELECT name,version from t2
) c
WHERE NOT EXISTS (SELECT 1 FROM t3 WHERE c.name=t3.name and c.version=t3.version)
;
您可以在連接條件中使用 <>
SELECT c.name,c.version
FROM
(SELECT name,version from t1
UNION
SELECT name,version from t2
) c
INNER JOIN t3 on c.name<>t3.name and c.version<>t3.version
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.