该查询按原样执行。但是,SQL Management Studio不会将其保存为视图,因为我定义了一个变量。查看,存储过程或表定义的函数
DECLARE @HighestTransaction int SET @HighestTransaction = (SELECT MAX(CardID) FROM dbo.Transactions) SELECT Uploads.*, Transactions.* FROM Uploads LEFT OUTER JOIN dbo.Transactions ON dbo.Uploads.Code = dbo.Transactions.CardID WHERE (Uploads.Code > CASE WHEN @HighestTransaction IS NULL THEN -1 ELSE @HighestTransaction END)
我还没有真正发挥各地使用存储过程,或用户定义的函数一大堆,所以我不知道的去这样做的最佳方式。或者,如果有更好的方法来写这篇文章,我也会接受建议。
,并指定你在需要的领域选择。选择*是一种特别差的编码习惯,因为你有一个加入,你会返回一个字段两次,这是浪费资源。 – HLGEM 2011-01-26 20:39:00
如果其中一个表的列数很少,那么SELECT *会出现问题,另一个是非常具体的视图,并且所有结果列将由调用方使用?无论如何,我写了SELECT *来节省空间,而不是分散其他东西。真正的查询确实展开了所有的列,因为这是VS和SQL Management Studio在安装SELECT *时自动执行的操作。 – kettch 2011-01-26 22:56:43