首先查询:
SELECT COUNT(*)
FROM `test` t ,`user_test` ut,`user` u
WHERE test_type_id = 1
AND t.created_on >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND t.created_on < CURDATE()
AND t.id = ut.test_id
AND u.id = ut.user_id
AND u.user_account_type_id != X
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
第二次查询:
SELECT COALESCE(SUM(IF(tt.type = 0, 1, 0)), 0) aaa, COALESCE(SUM(IF(tt.type = 1, 1, 0)), 0) bbb
FROM transaction_test tt ,USER u
WHERE tt.created_on >= DATE_SUB(CURDATE(), INTERVAL 10000 DAY) AND tt.created_on < CURDATE()
AND u.id = tt.user_id
AND u.user_account_type_id != X
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
必须从一个选择中选择结果 我试试这个
SELECT COALESCE(SUM(IF(tt.type = 0, 1, 0)), 0) Email, COALESCE(SUM(IF(tt.type = 1, 1, 0)), 0) SMS ,(
SELECT COUNT(*)
FROM `test` t ,`user_test` ut,`user` u
WHERE test_type_id = 1
AND t.created_on >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND t.created_on < CURDATE()
AND t.id = ut.test_id
AND u.id = ut.user_id
AND u.user_account_type_id != X
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
)
FROM transaction_test tt ,USER u
WHERE tt.created_on >= DATE_SUB(CURDATE(), INTERVAL 10000 DAY) AND tt.created_on < CURDATE()
AND u.id = tt.user_id
AND u.user_account_type_id != X
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
我不喜欢使用两次
AND u.user_account_type_id != X
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...'
这部分可以任何机构建议如何避免这种情况?提前谢谢
答案 0 :(得分:0)
尝试一下我加入了你的两个查询,因为在查询中你有相同的条件,我使用INNER JOIN
来确保两个表都有数据,如果你担心从右表获取数据或左表将其相应更改为RIGHT JOIN
或LEFT JOIN
SELECT COUNT(*) ,COALESCE(SUM(IF(tt.type = 0, 1, 0)), 0) aaa, COALESCE(SUM(IF(tt.type = 1, 1, 0)), 0) bbb
FROM `test` t ,
INNER JOIN `user_test` ut ON (t.id = ut.test_id)
INNER JOIN `user` u ON (u.id = ut.user_id)
INNER JOIN `transaction_test` tt ON (u.id = tt.user_id)
WHERE test_type_id = 1
AND t.created_on >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND t.created_on < CURDATE()
AND u.user_account_type_id != X
AND u.usr NOT LIKE '%...' AND u.usr NOT LIKE '%...' AND u.usr NOT LIKE '%...'
AND u.usr NOT LIKE '%...' AND u.usr NOT LIKE '%...' AND u.usr NOT LIKE '%...'
希望它运作良好