You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL语法咨询:查询指定城市发票是否需GROUP BY及WHERE条件写法

SQL问题解答

需求翻译

查找账单城市为Brasilia、Edmonton和Vancouver的所有发票,并按invoiceid降序排列。

疑问解答

1. 是否需要使用GROUP BY子句?

不需要。GROUP BY的作用是对查询结果做分组聚合(比如统计每个城市的发票总数),而你的需求只是筛选出符合条件的所有发票记录,不需要任何聚合计算,所以完全用不到GROUP BY。

2. WHERE子句中多个城市条件应使用AND还是逗号?

这两种方式都不对。多城市筛选的正确做法是用IN关键字指定允许的城市列表:

  • 用AND的话,会要求账单城市同时等于多个不同值,逻辑上不可能成立,自然查不到结果
  • WHERE子句里不能用逗号连接条件,这属于语法错误,所以才会报错

修正后的SQL语句

你当前的语句还有两处语法错误:SELECT子句末尾多了一个逗号,WHERE子句缺少条件判断逻辑。修正后的正确语句如下:

SELECT invoiceid, customerid, billingcity
FROM invoices
WHERE billingcity IN ('Brasilia', 'Edmonton', 'Vancouver')
ORDER BY invoiceid DESC;

关键说明

  • IN ('Brasilia', 'Edmonton', 'Vancouver'):指定账单城市是这三个值中的任意一个,这是多值筛选最简洁的写法
  • ORDER BY invoiceid DESC:按invoiceid降序排列,DESC表示降序,默认不写的话是升序(ASC)

内容的提问来源于stack exchange,提问作者Tammy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:41:59