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_value
是 varchar
类型,所以它是一个字符串,尽管它包含一个整数值。
问题是您试图在分组发生之前使用的查询的一部分中使用分组函数。您需要将该条件移至 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
收到 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_value
是 varchar
类型,所以它是一个字符串,尽管它包含一个整数值。
问题是您试图在分组发生之前使用的查询的一部分中使用分组函数。您需要将该条件移至 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