我在t-sql中寫了一個查詢,它在子查詢中使用了一個函數,並且遇到了兩個問題。如下t-sql中的子查詢Where子句是否查詢每行的數據?
AdID- Name
的選項表:如下 想象一個廣告表
OptionID - OptionName
而這兩個有兩個外鍵列之間的垃圾表(AdvertisementOptionLink):
AdID - OptionID
現在我想在用戶選擇選項時查詢廣告。 我寫了一個這樣的查詢:
SELECT * FROM Advertisement ad
INNER JOIN AdvertisementOptionLink aol
WHERE ad.AdvertisementID IN (SELECT AdvertisementID FROM UDF_GetAdvertisements)
現在UDF_GetAdvertisements是表值函數,返回的廣告列表有特定選項。
有兩個問題:
- 這是UDF_GetAdvertisements功能查詢所有數據的每一行?我的意思是,如果我在我的桌子上有2000個廣告,是否會查詢所有這些廣告並返回所有廣告ID?我最好將函數返回值保存在變量中嗎?
2.在這個數據庫中有一些沒有任何選項的廣告如果用戶沒有選擇任何選項,我該如何返回所有廣告?
在t-sql中使用表值參數來通過存儲過程傳遞選定的選項ID。 使用本頁有些幫助:http://www.sommarskog.se/arrays-in-sql-2008.html
每個問題請提出一個問題。 –
@MartinSmith OK讓我們堅持第一個;) – Ashkan