gpt4 book ai didi

值不相等时MySQL计数

转载 作者:行者123 更新时间:2023-11-29 05:02:38 25 4
gpt4 key购买 nike

我的 table 很少。 1.区域 2.餐厅 3.餐厅_itmes

地区

id | name
................
1 | NY
2 | Paris
3 | London

餐厅

id | name     | region_id
.........................
1 | KFC | 1
2 | McDonals'| 1
3 | La res | 2
4 | Queen's | 3

restaurant_items

id | name | restaurant_id | pro_pic   | featured_pic
...................................................
1 |Pizza |3 | null | defaut.jpg
2 |Pizza |4 | pizza.jpg | defaut.jpg
3 |Burger|1 | burger.jpg| burger.jpg
4 |Burger|2 | burger.jpg| burger.jpg
5 |Burger|3 | null | burger.jpg
6 |Burger|4 | null | default.jpg
7 |Donat |2 | null | default.jpg
8 |Fries |2 | null | default.jpg

我想生成一个查询来填充这个表

region  |Number of restaurants  |total items | items_with_pro_pic | items_with_featured_pic
............................................................................................
NY | 2 | 4 | 2 | 2
Paris | 1 | 2 | 0 | 1
London | 1 | 2 | 1 | 0

到目前为止我所做的是

SELECT region.name, count(restaurant_items.id) as total_items, count(restaurant_items.pro_pic)
INNER JOIN restaurant on restaurant_items.restaurant_id = restaurant.id
INNER JOIN region on restaurant.region_id = region.id
GROUP BY region.name;

在这里我可以通过计数获取items_with_pro_pic(restaurant_items.pro_pic)但我不能为 items_with_featured_pic 这样做,因为如果没有值(value),featured_pic 不能为 null默认值为 default.jpg。所以我尝试了 count(restaurant_items.featured_pic != 'defaut.jpg') 但这对我不起作用。

我怎么能得到餐馆的数量,因为它不是 restaurant_items 表的一部分?

如何使用 MySQL 实现这两个?

最佳答案

您可以将 COUNT 更改为 SUM 并在 IF 语句上运行它:

SUM(IF(restaurant_items.featured_pic != 'default.jpg',1,0))

或者您也可以根据需要将其指定为 COUNT,但 ELSE 部分需要为 NULL 而不是 0,否则它仍会对其进行计数:

COUNT(IF(restaurant_items.featured_pic != 'default.jpg',1,NULL))

要计算餐馆的数量,您可以简单地进行不同的计数:

COUNT(DISTINCT restaurant.id)

一些额外的小技巧:

  • 您可能希望将“restaurant_items”的名称更改为“restaurant_item”,因为这适合其他表的命名约定
  • 您应该在 FROM 和 JOIN 子句中为您的表命名别名,因为它增强了代码的易读性

关于值不相等时MySQL计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55096353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com