SQL按行级别过滤

时间:2014-11-07 22:05:19

标签: mysql sql

我正在尝试创建一个基于特定条件过滤数据的查询。我正在查看的表格包含发票订单行数据。例如,根据所有订单行(税,折扣,基本价格等),多次显示发票#1。因此,我不想显示发票上贴有折扣的所有发票,但我仍希望查看所有其他订单行。如果我为包含折扣的所有行执行where语句,则会隔离其他所有行。那么,如果应用了折扣,我将如何编写显示发票的所有订单行的查询?

2 个答案:

答案 0 :(得分:1)

使用类似:

SELECT * FROM MyTable WHERE InvoiceID IN ( SELECT InvoiceID FROM MyTable WHERE Discount = True )

首先获取所有具有折扣的发票,找到ID字段,并使用该字段以折扣返回所有发票的所有行。

答案 1 :(得分:0)

您可以使用子查询来执行此操作,例如:

select *
from Invoice inv
where id IN (select id from Invoice where discount > 0 ) 

子查询将搜索其中包含折扣的所有ID,查询将显示该子查询上的ID的所有条目