簡體   English   中英

加入用例聲明

[英]Join using case statement

我有兩張桌子

 tbl_cid
-------------------------
| cid | sid | rid | dt  |
-------------------------
| 1   | 101 | 103 | xxx |
| 6   | 104 | 101 | xxx |
| 8   | 104 | 103 | xxx |
| 9   | 105 | 104 | xxx |
-------------------------

tbl_uid
--------------
| uid | name |
--------------
| 101 | john |
| 103 | tim  |
| 104 | paul |
| 105 | alex |
--------------

SELECT u.name, c.cid, c.sid, c.rid FROM tbl_cid c
JOIN tbl_uid u on u.uid = c.sid 
WHERE c.sid = 101 OR c.rid = 101

Expected result:
--------------------
| cid | uid | name |
--------------------
| 1   | 103 | tim  |
| 6   | 104 | paul |
--------------------

我以不同的方式嘗試過,但找不到。 說如果我正在tbl_cid搜索101(如果sid有101,則加入rid),如果rid有101,然后加入sid。 任何幫助是極大的贊賞。 謝謝

我認為這是您要尋找的:

select tbl_cid.cid, tbl_uid.uid, tbl_uid.name
from tbl_cid, tbl_uid
where (tbl_cid.sid = tbl_uid.uid AND tbl_cid.rid = 101) OR (tbl_cid.rid = tbl_uid.uid AND tbl_cid.sid = 101);

Result:
--------------------
| cid | uid | name |
--------------------
| 1   | 103 | tim  |
| 6   | 104 | paul |
--------------------

我實際上不同意@wdika,您應該使用聯接,因為對兩個表使用where子句只會隱式執行聯接。

SELECT u.name, c.cid, c.sid, c.rid FROM tbl_cid c
    JOIN tbl_uid u on u.uid = c.sid or u.uid = c.rid
    WHERE (c.sid = 101 OR c.rid = 101) and u.uid != 101;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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