无法检测此查询中的错误

时间:2014-03-26 12:00:08

标签: mysql sql

这个查询做得好吗?我尝试了但是它以某种方式失败了......这些ID被称为唯一的,因此表之间的相关性应该有效,但它不会......

  

$ query =“SELECT   table1.id,table1.field1,table1.field2,table1.field3 FROM   table1,table2 WHERE table1.id ='(CASE WHEN'5'=   table2.id1那么table2.id2当'5'=   table2.id2 THEN table2.id1)'在哪里   table2.field6 = '完成'“;

ERROR:

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在'1'= relationships.id1附近使用正确的语法。关系.ID2 WHEN'1'= relationships.id2那么在第1行

2 个答案:

答案 0 :(得分:1)

这是您的查询,为人类格式化:

SELECT table1.id, table1.field1, table1.field2, table1.field3
FROM table1, table2
WHERE table1.id='(CASE WHEN '5' = table2.id1 THEN table2.id2 WHEN '5' = table2.id2 THEN table2.id1)'
WHERE table2.field6='done'

这个查询在很多方面被打破,我不知道从哪里开始。但是,您可以从理解case语句不应该用单引号括起来开始。并且SQL查询没有两个where子句。你应该学会正确的join语法。

这可能是你想要的:

SELECT t1.id, t1.field1, t1.field2, t1.field3
FROM table1 t1 join
     table2 t2
     on t1.id = 5 and 5 in (t2.id1, t2.id2)
WHERE table2.field6 = 'done'

答案 1 :(得分:0)

戈登是对的。也许这更接近于工作声明:

SELECT table1.id,table1.field1,table1.field2,table1.field3
FROM table1,table2
WHERE table1.id= (CASE WHEN '5' = table2.id1 THEN table2.id2 WHEN '5' = table2.id2 THEN table2.id1)
AND table2.field6='done';