无法在mysql查询中找出错误

时间:2014-03-27 21:28:17

标签: mysql sql

$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 ...

4 个答案:

答案 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'