我想做类似下面的例子
ColumnAVal = Select ColumnA from TableA where....
ColumnBVal = Select ColumnB from TableA where....
Select * from TableB where ColumnC = (value from ColumnA)
Select * from TableC where ColumnD = (value from ColumnB)
我必须从TableA查询中获取具有一个hefty where子句的值。我必须从TableA获得大约20个不同的列。所以,上面的例子不是一个好主意。我试图找到一种更好的方法来保存这些值,这并不要求我使用相同的where子句20次。
基本上,想法是从TableA获取20个左右的列,并将它们保存为变量供以后使用。这样我就可以只创建一个查询来保存列值而不是二十次调用它。
E.g。
@QuantityAvailable = SELECT TOP 1 WLPS_Qty_Available FROM
TBL_Warehouse_Location_Parts_Spec, TBL_Location_Master,
TBL_Warehouse_Master WHERE WLPS_Parts_Spec_ID = @PartSpecID AND WLPS_Part_Type_ID IN ( 0, @PartTypeID ) AND WLPS_Active_Flag = 'Y' AND ( WLPS_Location_ID = @LocationID )
我必须一次又一次地运行相同的查询20次。我宁愿不必为了节省一些处理费用。
答案 0 :(得分:3)
vc
使用的值来自返回集合中的最后一行,因此只有当select返回单行或者它是否适当排序(不太好)时才有意义。
答案 1 :(得分:0)
- 我必须假设where子句在每种情况下都不同
Select * from TableB where ColumnC IN (Select ColumnA from TableA where....)
Select * from TableC where ColumnD IN (Select ColumnB from TableA where....)