여러 하위 쿼리를 포함하여 복잡한 mysql 쿼리 언어가 있으며 최종 결과는 다음과 같습니다. 내가 다루고있는 것이 있는데 해결할 수없는 것이 결과가 제시되는 방식입니다. 결과가 한 행에만 표시되고 NULL 필드를보고 싶지 않은 방식으로 결과의 구조를 어떻게 변경할 수 있는지 궁금합니다. 나는 아래와 같은 것을 의미한다.
이것은 mysql 쿼리입니다.
select count(*) as userRetentionSameDay, null as 'userRetentionDiffDay' from (SELECT date(`timestamp`), `user_xmpp_login`
FROM table1
WHERE DATE(`timestamp` ) = CURDATE() - INTERVAL 1 DAY) as res1
right join (select date(ts), user
from table2
WHERE DATE(ts ) = CURDATE() - INTERVAL 1 DAY
and product_id REGEXP ("^(europe+$" )) as lej1
on lej1.user = res1.`user_xmpp_login`
where res1.`user_xmpp_login` IS not NULL
union all
select null as 'userRetentionSameDay', count(*) as userRetentionDiffDay from (SELECT date(`timestamp`), `user_xmpp_login`
FROM table1
WHERE DATE(`timestamp` ) = CURDATE() - INTERVAL 1 DAY) as res1
right join (select date(ts), user
from table2
WHERE DATE(ts ) = CURDATE() - INTERVAL 1 DAY
and product_id REGEXP ("^(europe+$" )) as lej2
on lej2.user = res1.`user_xmpp_login`
where res1.`user_xmpp_login` IS NULL;
이를 위해 권장되는 솔루션은 무엇입니까?
이 시도.
SELECT A.userRetentionSameDay, B.userRetentionDiffDay FROM (
SELECT COUNT ( ) AS userRetentionSameDay FROM (SELECT DATE ( timestamp
), user_xmpp_login
FROM table1 WHERE DATE ( timestamp
) = CURDATE ()-INTERVAL 1 DAY) AS res1 RIGHT JOIN (SELECT DATE (ts), USER FROM table2 WHERE DATE (ts) = CURDATE () )-간격 1 일 및 product_id REGEXP ( "^ (europe + $")) AS lej1 ON lej1.user = res1. user_xmpp_login
WHERE res1. user_xmpp_login
IS NOT NULL) A, (SELECT COUNT ( ) AS userRetentionDiffDay FROM (
SELECT DATE ( timestamp
), user_xmpp_login
from table1 WHERE DATE ( timestamp
) = CURDATE ()-INTERVAL 1 DAY
) AS res1
RIGHT JOIN (SELECT DATE (ts), table2에서 사용자 DATE (ts) = CURDATE ()-간격 1 일 및 product_id REGEXP ( "^ (europe + $"))
) AS lej2 ON lej2.user = res1. user_xmpp_login
어디 res1. user_xmpp_login
NULL입니다.
) B;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다