[英]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.