首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL select查询,其中所有行的值必须相等

SQL select查询,其中所有行的值必须相等
EN

Stack Overflow用户
提问于 2011-01-27 02:30:28
回答 4查看 6.6K关注 0票数 2

我需要从订单列表中生成账单。

我有一个查询,其中我得到了所有尚未支付的订单(paid_date = null),但问题是一些订单具有不同的税号。现在,我只能在该查询中组合具有相同税号的订单。

我正在考虑类似下面这样的事情,但这显然不起作用:

代码语言:javascript
复制
SELECT * from orders 
WHERE paid_date IS NULL AND tax_code = MAX(tax_code);

几乎就像一个反Distinct。

更新:

对不起,我想问题不是很清楚。我不是在找税号。我在找一份税号都一样的订单清单。但我并不关心它是哪种代码。这实际上只是一种安全措施,通常所有的税号都是相同的,但在极少数情况下它们是不同的。在这种情况下,用户需要生成2个单独的账单。

有什么简单的想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-27 03:06:07

您将需要标识除税码之外的另一个一致的列,例如,可能是customer_ID (例如);

获取当前客户的tax_codes列表:

代码语言:javascript
复制
SELECT customer_ID, tax_code
FROM Orders
WHERE customer_ID = 'some customer ID'
GROUP BY customer_ID, tax_code

上面的查询将返回distinct行数,因此如果有2个tax_codes,那么您将得到2行,并且需要生成2个账单;

然后,您可以像其他人所显示的那样进行查询:

代码语言:javascript
复制
SELECT * FROM Orders
WHERE paid_date IS NULL
AND tax_code = 'first tax code from your first query'

这将涉及到多次访问数据库。或者,您可以编写一个存储过程,利用临时表,并返回多个集合(多个SELECT语句),每个集合包含一个按tax_code排序的表格列表。

或者,如果您正在使用SQL (不了解MySQL),则可以编写SQL XML query,它将通过customer_id和tax_code返回分层数据。

这有帮助吗?

票数 2
EN

Stack Overflow用户

发布于 2011-01-27 02:53:19

坚持使用原始查询,子查询将执行此操作:

代码语言:javascript
复制
SELECT * from orders 
 WHERE paid_date IS NULL 
   AND tax_code = (
       select max(tax_code)
         from orders
        where paid_date is null
   )
票数 1
EN

Stack Overflow用户

发布于 2011-01-27 02:36:19

您应该按tax_code排序,并将获得按tax_code排序的订单列表

代码语言:javascript
复制
select * from orders
  where paid_date is null
 order by tax_code

然后迭代你的结果。每当您有一个不同的tax_code时,都会生成一个新的账单。

group_concat可能会给你想要的东西:

代码语言:javascript
复制
select tax_code, group_concat(order_id order by order_id) from orders
  where paid_date is null
 group by tax_code
-- optionally you can use a LIMIT 1 if you just want orders for the first tax_code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4808423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档