Select MySQL 使用不同 where 语句的查询中的多个计数
Select multiple count in MySQL query with different where statements
我有两个表,我想在加入它们后找到不同的行数。我的表是:
我想要 select 用户名和 (I) 用户拥有的图书数量(通过忽略状态)和 (II) 用户拥有的状态为 1 的图书数量。以及所有例如,其中 select 来自 his/her 名称中具有 "Doe" 的用户。是否可以?我怎样才能得到这些结果?
http://sqlfiddle.com/#!2/102ce8/3
示例结果:
(名称、总计数、特定计数)
无名氏,3 岁,1 岁
无名氏,2 岁,1 岁
SELECT tu.name,
Count(ts.id),
Sum(CASE
WHEN status = 1 THEN 1
ELSE 0
END)
FROM tblUsers tu
INNER JOIN tblStatus ts
ON ts.id = tu.id
WHERE tu.name LIKE '%doe%'
GROUP BY tu.id
你是这个意思吗?
SELECT nom,count(b.id_user),SUM(b.status) FROM user u,booking b WHERE u.id=b.id_user GROUP BY u.id
GROUP BY 是你的朋友 ;)
此语句适用于您的 SQL Fiddle:
SELECT
name,count(*),SUM(b.status)
FROM users u
INNER JOIN books b
ON u.id=b.user_id
GROUP BY u.id
如果您只想查看 Doe 家族,请添加如下 WHERE 子句:
SELECT
name,count(*),SUM(b.status)
FROM users u
INNER JOIN books b
ON u.id=b.user_id
WHERE u.name LIKE '%Doe%'
GROUP BY u.id
如果您想为状态列使用不同的值(例如 42 而不是 1),您应该像这样使用条件聚合计数:
SELECT
name,count(*),SUM(CASE
WHEN b.status = 1 THEN 1
ELSE 0
END)
FROM users u
INNER JOIN books b
ON u.id=b.user_id
WHERE u.name LIKE '%Doe%'
GROUP BY u.id
我有两个表,我想在加入它们后找到不同的行数。我的表是:
我想要 select 用户名和 (I) 用户拥有的图书数量(通过忽略状态)和 (II) 用户拥有的状态为 1 的图书数量。以及所有例如,其中 select 来自 his/her 名称中具有 "Doe" 的用户。是否可以?我怎样才能得到这些结果?
http://sqlfiddle.com/#!2/102ce8/3
示例结果:
(名称、总计数、特定计数)
无名氏,3 岁,1 岁
无名氏,2 岁,1 岁
SELECT tu.name,
Count(ts.id),
Sum(CASE
WHEN status = 1 THEN 1
ELSE 0
END)
FROM tblUsers tu
INNER JOIN tblStatus ts
ON ts.id = tu.id
WHERE tu.name LIKE '%doe%'
GROUP BY tu.id
你是这个意思吗?
SELECT nom,count(b.id_user),SUM(b.status) FROM user u,booking b WHERE u.id=b.id_user GROUP BY u.id
GROUP BY 是你的朋友 ;)
此语句适用于您的 SQL Fiddle:
SELECT
name,count(*),SUM(b.status)
FROM users u
INNER JOIN books b
ON u.id=b.user_id
GROUP BY u.id
如果您只想查看 Doe 家族,请添加如下 WHERE 子句:
SELECT
name,count(*),SUM(b.status)
FROM users u
INNER JOIN books b
ON u.id=b.user_id
WHERE u.name LIKE '%Doe%'
GROUP BY u.id
如果您想为状态列使用不同的值(例如 42 而不是 1),您应该像这样使用条件聚合计数:
SELECT
name,count(*),SUM(CASE
WHEN b.status = 1 THEN 1
ELSE 0
END)
FROM users u
INNER JOIN books b
ON u.id=b.user_id
WHERE u.name LIKE '%Doe%'
GROUP BY u.id