SQL 使用 LIKE 时可能出现语法错误

SQL Possible syntax error using LIKE

收到 SQL 错误,相信它位于 LIKE 语句附近,但不完全确定原因。

SELECT submit_time                                              AS datetime, 
       Max(IF(field_name = 'first-name', field_value, NULL))    AS fName, 
       Max(IF(field_name = 'submission_id', field_value, NULL)) AS id
FROM   wp_cf7dbplugin_submits 
WHERE  form_name = 'Personal Info' 
  AND ( Max(IF(field_name = 'submission_id', field_value, '')) LIKE '%4%' ) 
GROUP  BY submit_time 
ORDER  BY Max(IF(field_name = 'submission_id', field_value, '')) DESC 
LIMIT  0, 40 

你不能这样使用 LIKE 吗?如何重写此查询?

请注意:submit_time 并不总是不同的。 submit_time 指的是提交表单的时间,除了 submission_id 之外,它还包含许多其他 field_name 行。另外 field_valuevarchar 类型,所以它是一个字符串,尽管它包含一个整数值。

问题是您试图在分组发生之前使用的查询的一部分中使用分组函数。您需要将该条件移至 having 子句。此外,由于您已经在 select 中执行 MAX(IF(...)) 操作,您可以引用该字段:

SELECT submit_time AS datetime,
  ...,
  MAX(IF(field_name = 'submission_id', field_value, NULL)) AS id,
  ...
FROM wp_cf7dbplugin_submits
WHERE form_name = 'Personal Info'
GROUP BY submit_time
HAVING id LIKE '%4%'
ORDER BY id DESC LIMIT 0, 40