[英]Or condition in INNER JOIN
我有一張表,其結構如下(要點):
id1 | id2 | p1 | p2
1 3 5 7
3 1 2 4
1 2 1 7
另一個表的結構如下(用戶):
id | name
1 User1
2 User2
3 User3
因此,現在,我需要一個查詢,該查詢指定一個ID(例如3),該查詢檢查ID是否出現在id1和id2列中,如果它出現在兩列之一中,則使用以下命令返回用戶名:所選行中的id1和id2。 因此,例如,如果我指定了ID 3,則查詢將返回給我:
name1 | name2 | p1 | p2
User1 User3 5 7
User3 User1 2 4
我嘗試了各種解決方案,但沒有辦法解決,我認為我需要在INNER JOIN中使用OR條件,但我不知道是否有可能,這是否是解決方案..在這里我什么都沒找到。
我的意思是:
INNER JOIN users ON (users.id = points.id1) || (users.id = points.id2)
有什么解決辦法嗎? 謝謝
兩次連接用戶表:
SELECT u1.name, u2.name, p.p1, p.p2
FROM points p
JOIN users u1 ON u1.id = p.id1
JOIN users u2 ON u2.id = p.id2
WHERE u1.id = 3 OR u2.id = 3
用例語句,它將為您提供所有匹配值,而無需限制一個或兩個值
CREATE TABLE points (id1 int(2), id2 int(2), p1 int(2), p2 int(2));
INSERT INTO points VALUES(1,3,5,7);
INSERT INTO points VALUES(3,1,2,4);
INSERT INTO points VALUES(1,2,1,7);
CREATE TABLE users (id int(2), name char(23));
INSERT INTO users VALUES(1,'user1');
INSERT INTO users VALUES(2,'user2');
INSERT INTO users VALUES(3,'user3');
SELECT (CASE WHEN u.id = p.id1 THEN u.name END) AS name1,
(CASE WHEN u1.id = p.id2 THEN u1.name END) AS name2,
p1, p2
FROM points p
INNER JOIN users u ON (u.id = p.id1)
INNER JOIN users u1 ON (u1.id = p.id2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.