得到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
指的是表单提交的时间,除了field_name
之外还包含许多其他submission_id
行。此外field_value
的类型为varchar
,因此尽管保留了整数值,但它仍然是一个字符串。
答案 0 :(得分:1)
问题在于您尝试在分组发生之前使用的查询的一部分中使用组函数。您需要将该条件移动到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