我正在使用 MySQL。我有三张桌子,每张桌子都有一time列。
通过单个查询,我想计算between两个给定日期的行数。
我不需要表之间的连接(虽然它们是相关的),所以join没有必要。
是否可以?
失败的尝试 #1
SELECT
COUNT(a.time),
COUNT(b.time),
COUNT(c.time)
FROM
tbl1 AS a,
tbl2 AS b,
tbl3 AS c
WHERE
a.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55'
AND
b.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 18:46:55'
AND
c.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 18:46:55' ;
Run Code Online (Sandbox Code Playgroud)
这可能需要是一个 UNION 查询,如:
SELECT 'a'
, COUNT(a.time)
FROM
tbl1 AS a
WHERE
a.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55'
UNION ALL
SELECT 'b'
, COUNT(b.time)
FROM
tbl2 AS b
WHERE
b.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55'
UNION ALL
SELECT 'c'
, COUNT(c.time)
FROM
tbl3 AS c
WHERE
c.time BETWEEN '2018-03-07 18:32:55' AND '2018-03-07 20:46:55'
Run Code Online (Sandbox Code Playgroud)
输出将如下所示:
??????????????? ? 列 1 ? 列 2 ? ??????????????? ? 一种 ?10 ? ? 乙?3 ? ? C ?14 ? ???????????????
如果你想让它旋转:
SELECT
( SELECT COUNT(*) FROM tbl1
WHERE time BETWEEN '2018-03-07 18:32:55'
AND '2018-03-07 20:46:55' ) AS a
( SELECT COUNT(*) FROM tbl2
WHERE time BETWEEN '2018-03-07 18:32:55'
AND '2018-03-07 20:46:55' ) AS b
( SELECT COUNT(*) FROM tbl3
WHERE time BETWEEN '2018-03-07 18:32:55'
AND '2018-03-07 20:46:55' ) AS c
;
Run Code Online (Sandbox Code Playgroud)
这给出了类似的东西
a b c
10 3 14
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |