私がやろうとしているのは、次のチェックを行う1つのクエリを作成することです:
「yesnotmp」データベースに 2 つのテーブルがあります。msg_t
すべてのメッセージを含む1 つが呼び出されsend_time
、多くの列があります。status
phone
sushi_sub_id
ここでは、昨日のすべての電話、sushi_sub_id レコードを取得しています。(そしてそれは動作します)
SELECT phone, sushi_sub_id FROM `yesnotmp`.`msg`
LEFT JOIN `yesnotmp`.`msg_t` ON (`msg`.`id`=`msg_t`.`msg_id`)
WHERE `msg_t`.`send_time` BETWEEN '2013-06-02' AND '2013-06-03'
AND `msg_t`.`status` = 'Failure.Provider.Connection'
私がやろうとしているのは、retry
テーブルphone
で、同じものが挿入されたものsushi_sub_id
とそうでないものがいくつあるかを確認することです。(このクエリは非常に時間がかかります)
SELECT
Sum(CASE WHEN (SELECT Count(*) FROM `retry` AS `rty` WHERE `rty`.`phone` = `msgs`.`phone` AND `rty`.`sushi_subscription_id`=`msgs`.`sushi_sub_id`) > 0 THEN 1 ELSE 0 END) AS `In_Retry`,
Sum(CASE WHEN (SELECT Count(*) FROM `retry` AS `rty` WHERE `rty`.`phone` = `msgs`.`phone` AND `rty`.`sushi_subscription_id`=`msgs`.`sushi_sub_id`) > 0 THEN 0 ELSE 1 END) AS `Not_In_Retry`
FROM
(SELECT phone, sushi_sub_id FROM `yesnotmp`.`msg`
LEFT JOIN `yesnotmp`.`msg_t` ON (`msg`.`id`=`msg_t`.`msg_id`)
WHERE `msg_t`.`send_time` BETWEEN '2013-06-02' AND '2013-06-03'
AND `msg_t`.`status` = 'Failure.Provider.Connection') AS `msgs`