私は2つのテーブルを持っています:
sms_send次の列があります。
created_at, order_id, sms_id, mobile, msg
sms_msgには次の列がありますid, short_desc。
sms_idに対応しidますsms_msg。
sms_sendは同じ を持つ複数の行を持つことができますが、各レコードで同じではない場合がありますorder_id。sms_id
sms_msg一意の のみを持ちidます。
2 つのテーブルを結合したい (次の情報を使用して、2013 年 7 月 1 日以降に作成された行のみ:
ごとorder_idに、 を取得して他のテーブルからsms_id結合しshort_descますが、最新のレコードのみを返します。
order_idしたがって、それぞれに対応する結合された最新のレコードがありますshort_desc。
これが私の試みです:
SELECT
*,
`sms_msg`.`short_desc`
FROM
`sms_send`
INNER JOIN
`sms_msg`
ON
`sms_send`.`sms_id` = `sms_msg`.`id`
WHERE
`created_at` > '2013-07-01 00:00:00'
HAVING
`created_at` = (SELECT `created_at` FROM `sms_msg` GROUP BY `id` HAVING `created_at` = MAX(`created_at`))
これは機能せず、サブクエリは複数の行を返します。
なんでそうなの?どうすれば修正できますか?