2016-07-22 9 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_valueのタイプはvarcharなので、整数値を保持していても文字列です。

+0

あなたは、エラーをしてください投稿することができますか? – Will

+0

ワードプレスデータベースエラー: 'WordPressデータベースエラークエリのグループ関数の無効な使用 ' –

+1

WHERE句では、' MAX'のような集計関数を使用することはできません。 'SELECT'と' HAVING'(そして '_ 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