繁体   English   中英

将多个mysql查询合并为一个

[英]combining multiple mysql queries into one

我正在学习结合多个查询的Mysql命令和方法,因此为了实现该目标,现在我需要结合以下查询:

    list($TotalVisitsToday) = $db->sql_fetchrow($db->sql_query("SELECT  COUNT(DISTINCT ip_address) FROM table_iptracking WHERE `date_time` between '$yesterday' and '$today' "));
    list($TotalVisitsYesterday) = $db->sql_fetchrow($db->sql_query("SELECT  COUNT(DISTINCT ip_address) FROM table_iptracking WHERE `date_time` between '$yesterday_1' and '$yesterday'  "));

    list($TotalPVisitsToday) = $db->sql_fetchrow($db->sql_query("SELECT count(ipid) FROM table_iptracking WHERE `date_time` between '$yesterday' and '$today'"));
    list($TotalPVisitsYesterday) = $db->sql_fetchrow($db->sql_query("SELECT count(ipid) FROM table_iptracking WHERE `date_time` between '$yesterday_1' and '$yesterday'"));

    list($TotalCrawlers) = $db->sql_fetchrow($db->sql_query("SELECT count(ipid) FROM table_iptracking WHERE  hostname LIKE '%crawl%' "));

我不知道如何混合以上内容!

您可以将SQL语句形成一个UNION,类似...

SELECT COUNT(DISTINCT ip_address)
    FROM table_iptracking
    WHERE `date_time` between '$yesterday' and '$today'
UNION
SELECT COUNT(DISTINCT ip_address)
    FROM table_iptracking
    WHERE `date_time` between '$yesterday_1' and '$yesterday'
UNION
SELECT count(ipid)
    FROM table_iptracking
    WHERE `date_time` between '$yesterday' and '$today'
UNION
SELECT count(ipid)
    FROM table_iptracking
    WHERE `date_time` between '$yesterday_1' and '$yesterday'
UNION
SELECT count(ipid)
    FROM table_iptracking
    WHERE hostname LIKE '%crawl%'

我不能说我会推荐这个。 从长远来看,不同行表示不同事物的结果集可能会带来麻烦。

我不确定您的最终目标,但是如果您只想在一个查询中使用它,就可以这样做:

SELECT
(SELECT COUNT(DISTINCT ip_address) FROM table_iptracking WHERE 'date_time' between '$yesterday' and '$today') COUNT1,
(SELECT COUNT(DISTINCT ip_address) FROM table_iptracking WHERE 'date_time' between '$yesterday_1' and     '$yesterday') COUNT2,
(SELECT COUNT(ipid) FROM table_iptracking WHERE 'date_time' between '$yesterday' and '$today') COUNT3,
(SELECT COUNT(ipid) FROM table_iptracking WHERE 'date_time' between '$yesterday_1' and '$yesterday') COUNT4,
(SELECT COUNT(ipid) FROM table_iptracking WHERE  hostname LIKE '%crawl%') COUNT5

(您可以在MySQL中省略FROM运算符)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM