如何从两个查询中构建一个查询?
How to build one query out of two?
我有两个查询,当我将它们粘贴到 phpmyadmin 的 sql 控制台时表现良好:
第一次查询:
SET @count=0,@msisdn=00385913586990,@delivered=0;
第二次查询:
SELECT tmp.msisdn,max(count) FROM (
SELECT
sent_messages.msisdn,
@count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count,
@msisdn := 00385913586990,
@delivered := delivered
FROM `sent_messages`
WHERE `msisdn` LIKE '00385913586990'
AND `type` = 'PAID' ) as tmp
group by tmp.msisdn
having max(count) >= 14
当我尝试在我的 php 代码中执行这些查询时,我得到了空白结果。
以下是我尝试将它们绑定在一起的方法:
SELECT tmp.msisdn,max(count) FROM (
SELECT
sent_messages.msisdn,@count := 0,@msisdn=00385913586990,@delivered=0,
@count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count,
@msisdn := 00385913586990,
@delivered := delivered
FROM `sent_messages`
WHERE `msisdn` LIKE '00385913586990'
AND `type` = 'PAID' ) as tmp
group by tmp.msisdn
having max(count) >= 14
但这行不通。
初始化您简单交叉连接的子查询中的变量。这样他们就被初始化了一次。当您在 SELECT
子句中执行此操作时,每次读取一行时它们都会退回。
SELECT tmp.msisdn,max(count) FROM (
SELECT
sent_messages.msisdn,
@count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count,
@msisdn := 00385913586990,
@delivered := delivered
FROM `sent_messages`
, (SELECT @count := 0, @msisdn := '00385913586990', @delivered := 0) var_init_subquery_alias
WHERE `msisdn` LIKE '00385913586990'
AND `type` = 'PAID' ) as tmp
group by tmp.msisdn
having max(count) >= 14
我有两个查询,当我将它们粘贴到 phpmyadmin 的 sql 控制台时表现良好:
第一次查询:
SET @count=0,@msisdn=00385913586990,@delivered=0;
第二次查询:
SELECT tmp.msisdn,max(count) FROM (
SELECT
sent_messages.msisdn,
@count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count,
@msisdn := 00385913586990,
@delivered := delivered
FROM `sent_messages`
WHERE `msisdn` LIKE '00385913586990'
AND `type` = 'PAID' ) as tmp
group by tmp.msisdn
having max(count) >= 14
当我尝试在我的 php 代码中执行这些查询时,我得到了空白结果。
以下是我尝试将它们绑定在一起的方法:
SELECT tmp.msisdn,max(count) FROM (
SELECT
sent_messages.msisdn,@count := 0,@msisdn=00385913586990,@delivered=0,
@count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count,
@msisdn := 00385913586990,
@delivered := delivered
FROM `sent_messages`
WHERE `msisdn` LIKE '00385913586990'
AND `type` = 'PAID' ) as tmp
group by tmp.msisdn
having max(count) >= 14
但这行不通。
初始化您简单交叉连接的子查询中的变量。这样他们就被初始化了一次。当您在 SELECT
子句中执行此操作时,每次读取一行时它们都会退回。
SELECT tmp.msisdn,max(count) FROM (
SELECT
sent_messages.msisdn,
@count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count,
@msisdn := 00385913586990,
@delivered := delivered
FROM `sent_messages`
, (SELECT @count := 0, @msisdn := '00385913586990', @delivered := 0) var_init_subquery_alias
WHERE `msisdn` LIKE '00385913586990'
AND `type` = 'PAID' ) as tmp
group by tmp.msisdn
having max(count) >= 14