将SQL查询合并为一个

时间:2017-12-05 04:27:16

标签: mysql sql

我正在尝试将两个查询合并为一个。

首先查询:

select SaleID 
from Sales 
where InvoiceStatusID = 'OR';

第二次查询:

select ItemSaleLines.Quantity, Items.CustomField2 
from ItemSaleLines 
inner join Items on ItemSaleLines.ItemID = Items.ItemID 
inner join Sales on ItemSaleLines.SaleID = Sales.SaleID 
where (ItemSaleLines.SaleID = {keyProductID} 
  and (ItemSaleLines.Quantity > 0) 
  and (Items.ItemNumber not like '%tnt%') 
  and (Items.ItemNumber not like '%contact%') 
  and (Items.ItemNumber <> '') 
  and (Items.ItemNumber <> '-' ) )

其中keyProductID是我从查询1获得的SaleID

我这样做是先将SaleID从查询1中存储并传递给查询2,但效率不高且调用次数过多。

更好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情,

select ItemSaleLines.Quantity,Items.CustomField2 from ItemSaleLines 
inner join Items on ItemSaleLines.ItemID=Items.ItemID 
inner join Sales on ItemSaleLines.SaleID=Sales.SaleID 
where (ItemSaleLines.SaleID=(select SaleID from Sales where InvoiceStatusID='OR')
AND (ItemSaleLines.Quantity > 0) AND (Items.ItemNumber not 
like '%tnt%') AND (Items.ItemNumber not like '%contact%') AND (Items.ItemNumber <> '') AND (Items.ItemNumber <> '-' ) )