簡體   English   中英

根據條件從表中返回一個條目,該條件不在另一個表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM