我想合并来自不同表的数据。我跟踪物品价格,所以我有一个特定项目的价格条目。如果在价格表中未找到任何条目,则表示该项目是免费的。
使用Top 1
和Order by Id Desc
来获取最后一个条目,认为它可以正常工作,但SQL会给我一个使用它的警告。
SELECT
(SELECT TOP (1) CASE WHEN Price IS NULL THEN 0.0
ELSE Price END
FROM dbo.Prices
WHERE (Id = table1.Id) AND (TableName = 'mytable')
ORDER BY Id DESC) AS Price,
(SELECT TOP (1) CASE WHEN Price IS NULL OR DiscountPrice IS NULL THEN 0.0
ELSE DiscountPrice END
FROM dbo.Prices
WHERE (Id = table1.Id) AND (TableName = 'mytable')
ORDER BY Id DESC) AS Discount FROM dbo.MainTable as table1
'警告:ORDER BY子句仅用于确定视图定义中TOP子句返回的行。 ORDER BY子句不保证有序结果......'
预期结果是从另一个表中检索最后的价格和折扣号
答案 0 :(得分:1)
使用聚合和子查询
像...一样的东西。
Where Id = (select max(Id) from dbo.prices)