[英]How to Count Rows from two Tables with one Command in MySQL
i want to count 2 tables from diferent table, im select the date
then i group it. 我想从不同的表中计数2个表,即时通讯选择
date
然后将其分组。
here what i try 这是我尝试的
SELECT
(SELECT date(date), COUNT(sh_sh) FROM sh_url GROUP BY date(date)) AS URLs,
(SELECT date(date), COUNT(ip) FROM tracking GROUP BY date(date)) AS IP
FROM dual
but i get error 但我得到错误
1241 - Operand should contain 1 column(s)
1241-操作数应包含1列
is that posible to do it in one command? 用一个命令就能做到吗?
the output should be like this 输出应该是这样的
date(url) count(sh_sh) date(ip) count(ip)
--------- ------------ ---------- ----------
2018-04-25 123 2018-04-25 123123
2018-04-26 456 2018-04-26 321
2018-04-27 789 2018-04-27 3125
I would phrase your problems using a join of two subqueries: 我用两个子查询的连接来表达您的问题:
SELECT
t1.date,
t1.url_cnt,
COALESCE(t2.ip_cnt, 0) AS ip_cnt
FROM
(
SELECT date, COUNT(*) url_cnt
FROM sh_url
GROUP BY date
) t1
LEFT JOIN
(
SELECT date, COUNT(*) ip_cnt
FROM tracking
GROUP BY date
) t2
ON t1.date = t2.date;
When you use a subquery as a value, it can only return one row and one column. 当使用子查询作为值时,它只能返回一行和一列。 You need to use a
JOIN
: 您需要使用
JOIN
:
SELECT urls.date, urls.count AS sh_count, ip.count AS ip_count
FROM (SELECT date(date) AS date, COUNT(*) AS count FROM sh_url GROUP BY date(date)) AS urls
JOIN (SELECT date(date) AS date, COUNT(*) AS count FROM tracking GROUP BY date(date)) AS ip
ON urls.date = ip.date
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.