[英]Return an entry from a table based on criteria, which is not in another table
我需要有關查詢的幫助,我無法弄清楚如何使其工作。
表格1
uid | G | L
------------
cde 2 1
fgk 1 2
kgl 2 1
表2
uid1 |uid2
-----------
abc cde
fgk cde
mnm kgl
我有一個已知的uid
uid | G | L
-----------
abc 1 2
而且我必須將此uid與Table1中的一個匹配
我對此的查詢是:
SELECT * FROM Table1 WHERE G=2 AND L=1 ORDER BY RAND() LIMIT 1
這將返回:
cde 2 1
kgl 2 1
我要查找的查詢必須僅返回kgl
因為cde
已在Table2中與abc
配對
有任何想法嗎?
更新 :通過一些調整,我想出了以下查詢:
SELECT uid FROM table1 AS t1
WHERE G = 1 AND L = 2 AND NOT EXISTS
(SELECT * FROM table2 AS t2
WHERE (t1.uid = t2.uid1 OR t1.uid=t2.uid2) AND (t2.uid1 = 'abc' OR t2.uid2 = 'abc'))
您可以使用NOT EXISTS
來做到這一點:
SELECT uid, G, L
FROM Table1 AS t1
WHERE G = 2 AND L = 1
AND NOT EXISTS (SELECT 1
FROM Table2 AS t2
WHERE t1.uid = t2.uid2 AND t2.uid1 = 'abc')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.