$query = "SELECT
table1.first_name,
table1.id,
table1.profile_image
FROM table1,table2
WHERE table1.id = (
CASE
WHEN '$id' = table2.id1
THEN
table2.id2
WHEN '$id' = table2.id2
THEN
table2.id1
)
AND table2.case='done'";
此查询失败,我无法弄清楚为什么......我想要的是获取table1和table2之间的ID连接。事情是 table2有两个id字段,我不知道我想要的Id是否在字段 id1 或 id2 。然后将其他ID( NOT $ id ,但是来自table2中 $ id 的合作伙伴)加入table1中的ID ...
答案 0 :(得分:4)
您知道案例构建的正确语法是:
CASE
WHEN ...
THEN ....
WHEN ...
THEN ....
ELSE ...
END
注意......末尾的END
;)
答案 1 :(得分:0)
end
中缺少case
是查询的明显问题。但是,最好写成:
SELECT t1.first_name, t1.id, t1.profile_image
FROM table1 t1 join
table2 t2
on ('$id' = table2.id1 and t1.id = t2.id2) or
('$id' = table2.id2 and t1.id = t2.id1)
WHERE t2.case = 'done';
请注意使用显式join
语法,使用表别名,以及用基本布尔逻辑替换case
。
答案 2 :(得分:0)
Select first_name, id, profileImage From Table1
inner join (
Select id1 as t2id From Table2 where `case` = 'done'
union
Select id2 From Table2 Where `case` = 'done') t2Ids
) On Table1.id = t2Ids.t2id
Where t2Ids.t2Id = $id
这是另一种方法。
答案 3 :(得分:-1)
试试这个:
SELECT table1.first_name,table1.id,table1.profile_image
FROM table1,table2
WHERE (table1.id = table2.id1 or table1.id = table2.id2)
AND table2.case='done'