在此查询中无法检测到错误
Posted
技术标签:
【中文标题】在此查询中无法检测到错误【英文标题】:Can't detect error in this query 【发布时间】:2014-03-26 12:00:08 【问题描述】:这个查询做得好吗?我试过了,但不知何故失败了……ID被称为唯一的,所以表之间的相关性应该有效,但它没有……
$query = "选择 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)' 在哪里 table2.field6='完成'";
错误:
您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 1 行的 '1' = Relations.id1 THEN Relations.id2 WHEN '1' = Relations.id2 THEN ' 附近使用正确的语法
【问题讨论】:
您是遇到错误还是只是意外结果?请在您的问题中更具描述性。 2 where 子句中的错误?用于多种条件 除了另一位评论者提到的两个 WHERE 子句之外,您的 CASE 表达式周围还有引号,这是错误的。 我没有看到 table1 和 table2 之间有任何连接... 【参考方案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'
【讨论】:
【参考方案2】:戈登是对的。也许这更接近于工作声明:
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';
【讨论】:
以上是关于在此查询中无法检测到错误的主要内容,如果未能解决你的问题,请参考以下文章
以前工作的 iframe 中出现“Chrome 检测到异常代码”错误
错误:检测到“站点”没有命名空间,但没有目标命名空间的组件无法从架构文档中引用