在此查询中无法检测到错误

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 检测到异常代码”错误

无法修复警告检测到重复键:“0”。这可能会导致更新错误

错误:检测到“站点”没有命名空间,但没有目标命名空间的组件无法从架构文档中引用

在此时间窗口中检测到记忆力衰竭的早期症状

错误无法检测 ServletContainerInitializers Tomcat 8

Heroku 推送错误:“无法检测到 rake 任务”(Rails 6.1)