这个查询做得好吗?我尝试了但是它以某种方式失败了......这些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行
答案 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';