MySQL语法错误,但一切看起来都是正确的

标签 mysql sql syntax

这是 SQL 错误:

Error: 1064 - You have an error IN your SQL syntax; CHECK the manual that corresponds TO         your MySQL server version FOR the RIGHT syntax TO USE near ') and (pi.perm_type='forum' and ( pi.perm_2='*' OR pi.perm_2 LIKE '%,4,%' )) and' at line 2

这是 SQL 查询:

SELECT t.tid AS id, t.title, t.last_poster_id AS id2,m.member_group_id, 
m.members_display_name AS statistic,pi.perm_2 FROM topics t  LEFT JOIN members m ON (
m.member_id  = t.last_poster_id )
LEFT JOIN permission_index pi ON ( pi.app='forums' AND pi.perm_type='forum' AND 
pi.perm_type_id=t.forum_id )   WHERE t.forum_id NOT IN() AND (pi.perm_type='forum' AND (
pi.perm_2='*' OR pi.perm_2 LIKE '%,4,%' )) AND t.approved=1 AND (t.moved_to='' OR 
t.moved_to IS NULL ) ORDER BY t.last_post DESC LIMIT 0,11

现在,这个查询在我的 MySQL 本地安装 (XAMPP) 上运行良好。

会不会是MySQL版本不同导致本次查询出现SQL错误?究竟是什么导致了错误?

  1. “LIKE”运算符?

  2. where 子句中的嵌套语句? (在()之间)

  3. 还有别的吗?

提前致谢!

最佳答案

你有一个空的 NOT IN

此外,您不需要 pi 上的 WHERE 条件之一,因为它在 LEFT JOIN 中。但是,外部表 pi 上 WHERE 中的 LIKE 过滤器将其更改为内部连接。

因此,您将需要它并修复您的 IN

SELECT 
   t.tid AS id, 
   t.title, 
   t.last_poster_id AS id2,m.member_group_id, 
   m.members_display_name AS statistic,  
   pi.perm_2 
FROM 
   topics t
   LEFT JOIN
   members m ON m.member_id  = t.last_poster_id
   LEFT JOIN 
   permission_index pi ON pi.app='forums' AND pi.perm_type='forum' AND 
                                    pi.perm_type_id=t.forum_id
                             AND 
                          (pi.perm_2='*' OR pi.perm_2 LIKE '%,4,%')
WHERE 
   -- t.forum_id NOT IN() -- error is here
   -- AND 
   t.approved=1 
   AND 
   (
    t.moved_to='' OR t.moved_to IS NULL) 
ORDER BY 
   t.last_post DESC 
LIMIT 0,11

注意格式化会容易得多,是吗?

关于MySQL语法错误,但一切看起来都是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955325/

相关文章:

oracle - Oracle函数编译错误PLS-00103(遇到符号 “SELECT”…)

c - C 中的结构语法 (->)

php - 为什么此代码的结果会跳过几个月?

php - 在 SQL 中标记结果

MySQL 查询显示不正确

sql - 使用单个查询通过连接两个表来检索多值属性,而不会导致 mysql 中的字段重复

c++ - 使用指针问题调用类函数

mysql - 根据当前选择添加额外的商店过滤器

mysql - SQL LIKE 是如何工作的

php - RSS 提要 PHP/MySQL