我想要做的是创建 1 个查询,它将执行以下检查:
我在“yesnotmp”数据库中都有 2 个表。一个被称为msg_t
包含所有消息,它有很多列。我在这个查询中关心的是这两个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`