我如何在select查询中使用mysql计数?
我有一个mysql select查询,如下所示:我如何在select查询中使用mysql计数?,mysql,select,count,Mysql,Select,Count,我有一个mysql select查询,如下所示: select r.restaurant_id, r.restaurant_name, r.city_id, c.name from restaurants r inner join cities c on c.id = r.city_id; 这是上述查询的结果: +---------------+----------------------+---------+-------------+ | restaurant_id | restaur
select r.restaurant_id, r.restaurant_name, r.city_id, c.name
from restaurants r
inner join cities c on c.id = r.city_id;
这是上述查询的结果:
+---------------+----------------------+---------+-------------+
| restaurant_id | restaurant_name | city_id | name |
+---------------+----------------------+---------+-------------+
| 7 | Somasiri Bake House | 5 | Mumbai |
| 8 | Indian Bake House | 7 | Chennai |
| 9 | KFC Rest | 5 | Mumbai |
| 10 | Indian t | 5 | Mumbai |
+---------------+----------------------+---------+-------------+
现在我想显示所有可用的城市,以及一个城市现有的餐厅数量
例如:孟买(3)、钦奈(1)等等
我用mysqlcon()
尝试了下面的方法,但它对我不起作用
SELECT c.name, count(r.city_id) AS count
FROM cities c
INNER JOIN restaurants r ON c.id = r.city_id;
谁能告诉我这有什么问题吗
希望有人能帮助我。
多谢各位 这称为分组或聚合查询,您需要告诉它如何对元素进行分组 加上
GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name
最后,在您的最后分号之前。这称为分组或聚合查询,您需要告诉它如何对元素进行分组 加上
GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name
最后,在您的最后分号之前。这称为分组或聚合查询,您需要告诉它如何对元素进行分组 加上
GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name
最后,在您的最后分号之前。这称为分组或聚合查询,您需要告诉它如何对元素进行分组 加上
GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name
最后,在您的最后分号之前。如果您不需要餐厅数据,请使用一个简单的分组:
select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id
看
或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:
select
r.restaurant_id,
r.restaurant_name,
c.id,
c.name,
coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
on a.city_id = r.city_id
请参阅。如果不需要餐厅数据,请使用简单的分组方式:
select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id
看
或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:
select
r.restaurant_id,
r.restaurant_name,
c.id,
c.name,
coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
on a.city_id = r.city_id
请参阅。如果不需要餐厅数据,请使用简单的分组方式:
select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id
看
或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:
select
r.restaurant_id,
r.restaurant_name,
c.id,
c.name,
coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
on a.city_id = r.city_id
请参阅。如果不需要餐厅数据,请使用简单的分组方式:
select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id
看
或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:
select
r.restaurant_id,
r.restaurant_name,
c.id,
c.name,
coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
on a.city_id = r.city_id
请参阅。您缺少了一个
分组依据
。您缺少了一个分组依据
。您缺少了一个分组依据
。我鼓励正确使用分组依据
(不是MySQL的错误行为)将所有SELECT
列添加到组中:groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它的工作。。。但它并没有选择所有的选项cities@MichaelBerkowski . . . 我大体上同意你的意见。然而,根据ANSI,由于函数依赖的概念,这个特定的例子并不是不正确的行为。我认为Postgres可能是唯一一个正确实现这一功能的数据库,它在解释这一概念方面做得很好()。即使没有任何餐厅,我们也能选择所有可用的城市吗?我同意@MichaelBerkowski的观点,按所有未聚合列分组是理想的。我鼓励正确使用分组方式(不是MySQL的错误行为)通过将所有SELECT
列添加到组中:groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它可以工作……但它没有选择所有cities@MichaelBerkowski…我大体上同意你的看法。但是,我认为根据ANSI标准,由于函数依赖性的概念,特别的例子不是不正确的行为。我认为Postgres可能是唯一正确实现此功能的数据库,它在解释这一概念方面做了充分的工作()。即使没有任何餐厅,我们也可以选择所有可用的城市吗?我同意@MichaelBerkowski的观点,按所有未聚合的列进行分组是理想的。我鼓励正确使用GROUP by
(不是MySQL的错误行为)通过将所有SELECT
列添加到组中:groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它可以工作……但它没有选择所有cities@MichaelBerkowski…我大体上同意你的看法。但是,我认为根据ANSI标准,由于函数依赖性的概念,特别的例子不是不正确的行为。我认为Postgres可能是唯一正确实现此功能的数据库,它在解释这一概念方面做了充分的工作()。即使没有任何餐厅,我们也可以选择所有可用的城市吗?我同意@MichaelBerkowski的观点,按所有未聚合的列进行分组是理想的。我鼓励正确使用GROUP by
(不是MySQL的错误行为)通过将所有SELECT
列添加到组中:groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它可以工作……但它没有选择所有cities@MichaelBerkowski…我大体上同意你的看法。但是,我认为根据ANSI标准,由于函数依赖性的概念,特别的例子不是不正确的行为。我认为Postgres可能是唯一正确实现此功能的数据库,它在解释这一概念方面做了充分的工作()。即使没有任何餐厅,我们也可以选择所有可用的城市吗?我同意@MichaelBerkowski的说法,按所有未聚合的列进行分组是理想的。波希米亚,您的查询返回了所有可用的餐厅