2016-07-22 1 views
0

SQL 오류가 발생했습니다.이 오류는 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과 같은 것을 사용할 수 없습니까? 이 쿼리를 다시 쓰는 방법?

Database Table snapshot

참고 : submit_time 항상 다르지 않다. submit_time은 양식이 제출 된 시간을 말하며 submission_id 이외의 많은 다른 field_name 행을 보유합니다. 또한 field_valuevarchar 유형이므로 정수 값을 보유하고 있음에도 불구하고 문자열입니다.

+0

오류를 게시 할 수 있습니까? – Will

+0

Wordpress 데이터베이스 오류 :'WordPress 데이터베이스 오류 쿼리에 그룹 함수를 잘못 사용했습니다. ' –

+1

WHERE 절에'MAX'와 같은 집계 함수를 사용할 수 없습니다. 'SELECT'와'HAVING' 만 (그리고 _Maybe_'ORDER BY') 할 수 있습니다. – Uueerdo

답변

1

그룹화가 발생하기 전에 사용되는 쿼리의 일부에서 그룹 함수를 사용하려고하는 것이 문제입니다. 해당 조건을 having 절로 옮겨야합니다. 또한 선택에서 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