mysql - 将 SQL 查询合并为一个

标签 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

我通过首先存储查询 1 中的 SaleID 并传递给查询 2 来实现此目的,但效率不高且调用次数过多。

更好的方法是什么?

最佳答案

你可以尝试这样的事情,

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 <> '-' ) )

关于mysql - 将 SQL 查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47646085/

相关文章:

mysql - 使用 SQL 选择动态 Unix 纪元时间

mysql - 选择包含几乎重复的行

mysql - 根据一个表列更新另一表列

mysql 使用带有动态表名的 SHOW CREATE TABLE

sql - 如何使用 SQL Server 完成此任务

sql - 在sql中将varchar转换为datetime

sql - 使用 SUM 和 Group by 计算百分比

php - SQL - 为什么我的 INSERT 查询死了?

mysql - 使用聚合函数优化MYSQL查询

sql - 在 Phonegap 中运行 SQL 查询