我需要查询方面的帮助,但我不知道如何使其工作。
表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')
关于mysql - 根据条件从表中返回一个条目,该条目不在另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31148289/