<?php
$result = mysql_query("SELECT COUNT(`uid`), `mac`, SUM(`time`)/60 AS ConnTime, SUM(`download`)/1000000 AS TotalDown, SUM(`upload`)/1000000 AS TotalUp
FROM `cdr_data_january`
WHERE (`towerid` LIKE '".$btsid."') AND (`ldate` BETWEEN '".$date1."' AND '".$date2."')
GROUP BY `uid`
UNION
SELECT COUNT(`uid`), `mac_add`, SUM(`time`)/60 AS ConnTime, SUM(`download`)/1000000 AS TotalDown, SUM(`upload`)/1000000 AS TotalUp
FROM `cdr_data_february`
WHERE (`bts` LIKE '".$btsid."') AND (`ldate` BETWEEN '".$date1."' AND '".$date2."')
GROUP BY `uid`");
mysql_fetch_row($result);
$numrows = mysql_num_rows($result);
?>
編輯這裏是格式化爲可讀性的sql。如何在使用多個聯合並且所有(*)數據列不被抓取時獲取行號?
SELECT COUNT(`uid`),
`mac`,
SUM(`time`)/60 AS ConnTime,
SUM(`download`)/1000000 AS TotalDown, SUM(`upload`)/1000000 AS TotalUp
FROM `cdr_data_january`
WHERE (`towerid` LIKE '".$btsid."')
AND (`ldate` BETWEEN '".$date1."' AND '".$date2."')
GROUP BY `uid`
UNION
SELECT COUNT(`uid`),
`mac_add`,
SUM(`time`)/60 AS ConnTime,
SUM(`download`)/1000000 AS TotalDown,
SUM(`upload`)/1000000 AS TotalUp
FROM `cdr_data_february`
WHERE (`bts` LIKE '".$btsid."')
AND (`ldate` BETWEEN '".$date1."' AND '".$date2."')
GROUP BY `uid`
上面的行沒有返回行數。
上面的代碼工作時,我用(*)抓住整個表並將其計數爲COUNT(*)。
請給我一個解決方案,使我能得到的行數這樣的查詢在使用UNION多,且所有列不抓住。
*旁註:*停止使用'mysql_ *'函數,它們已被棄用。改用MySQLi或PDO。 – Raptor
'select count(*)from(... union stuff here ...)'? –
你想要結果集的行數? – Raptor