基本上我的桌子很像下面的图片。
首先,我通过给定的CustomerID获得SaleOrderID:
Select
SaleOrderID
From tblSaleOrder
where CustomerID = 512992
返回,1002,1003,1005,1009
我想使用这些数字来选择tblSaleOrderDetail:
Select
*
from tblSaleOrderDetail
where SaleOrderID = 1002,1003,1005,1009
(来自其他查询的值)
我需要有关查询的建议,以使用来自其他选择的值。有没有办法创建数组来保存值,然后将其用于另一个查询?或者更简单的方法!
答案 0 :(得分:4)
在in
子句中使用子选择:
select *
from tblSaleOrderDetail
where SaleOrderID in (
select SaleOrderID
from tblSaleOrder
where CustomerID = 512992)
在in子句中使用subselect时,请记住您只能在子选择中选择一列。
您还可以执行加入:
select *
from tblSaleOrderDetail sod
join tblSaleOrder so
on sod.SaleOrderId = so.SaleOrderId
where so.CustomerID = 512992
答案 1 :(得分:3)
这是一个非常基本的SQL操作,称为join
。虽然您可以将in
用于此目的,但更典型的方法是:
select sod.*
from tblSaleOrder so join
tblSaleOrderDetail sod
on so.SaleOrderID = sod.SaleOrderID
where so.CustomerID = 512992;
如果您正在学习SQL,join
操作是您应该学习的第一件事。
答案 2 :(得分:1)
这个帖子可能有点过分,因为问题相当基本,但我想给你一个选项列表以及一些基本建议。最简单的方法之一是使用IN
子句。 IN
子句在概念上非常类似于=,除了它查找项列表。
示例
Select
*
from tblSaleOrderDetail
where SaleOrderID IN
(
Select
SaleOrderID
From tblSaleOrder
where CustomerID = 512992
)
另一种实现此目的的方法是使用EXISTS
。这非常类似于它检查另一个表中存在的行的声音。
Select
*
from tblSaleOrderDetail AS SOD
where EXISTS
(
Select
1
From tblSaleOrder AS SO
where CustomerID = 512992
AND SOD.SaleOrderID = SO.SaleOrderID
)
注意我如何使用AS SO和SOD为这些表提供新名称。这称为别名,它是你的朋友。我强烈建议您在将来的查询中使用它。
你也可以使用JOIN
但是当我开始写这篇文章的时候已经有了一个例子。