MySQL を使用して次のクエリを実行しようとしています。
SELECT e.event,
BINARY e.params as params,
UNIX_TIMESTAMP(e.datetime) AS datetime,
p.postid AS postid,
q.postid AS parentid
FROM qa_eventlog as e
LEFT JOIN qa_posts as p
LEFT JOIN qa_posts as q ON e.userid=1 AND
DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= datetime AND
e.params LIKE '%postid='+p.postid+'%' AND
e.params LIKE '%parentid='+q.postid+'%'
ORDER BY datetime DESC
しかし、次のエラーが発生します。
エラー 1064: SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください near '+p.postid+'%' AND e.params LIKE '%parentid='+q.postid+'%' ORDER BY datetime DESC' at line 1
+
クエリに値を追加する正しい方法だと思った記号が気に入らないようです。そうではないと思います:)あるテーブルの列値(整数)が別のテーブルの列値(文字列)にあるかどうかを確認するにはどうすればよいですか?
編集:答えてくれてありがとう、これがうまくいったコードですCONCAT
:
SELECT e.event,
BINARY e.params as params,
UNIX_TIMESTAMP(e.datetime) AS datetime,
p.postid AS postid,
q.postid AS parentid
FROM qa_eventlog AS e
LEFT JOIN qa_posts AS p
ON e.params LIKE CONCAT('%postid=', p.postid, '%' )
LEFT JOIN qa_posts AS q
ON e.params LIKE CONCAT('%postid=', q.postid, '%' )
WHERE e.userid=1
AND DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= datetime
ORDER BY datetime DESC