私は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`))
これは機能せず、サブクエリは複数の行を返します。
なんでそうなの?どうすれば修正できますか?