我在查看sql內部查詢(有點像C#anon方法的sql等價物),並且想知道,我可以從查詢中返回多個值嗎?從sql語句中返回多個值
例如,將表中的行數作爲一個輸出值返回,並且作爲另一個輸出值返回不同的行數?
另外,獨特的工作如何?這是基於一個領域是否可能與另一個領域相同(因此被歸類爲「獨特」)?
我正在使用Sql Server 2005.如果我從一個查詢中返回一個值,而不是從一個查詢中返回兩個值,會有性能損失嗎?
感謝
我在查看sql內部查詢(有點像C#anon方法的sql等價物),並且想知道,我可以從查詢中返回多個值嗎?從sql語句中返回多個值
例如,將表中的行數作爲一個輸出值返回,並且作爲另一個輸出值返回不同的行數?
另外,獨特的工作如何?這是基於一個領域是否可能與另一個領域相同(因此被歸類爲「獨特」)?
我正在使用Sql Server 2005.如果我從一個查詢中返回一個值,而不是從一個查詢中返回兩個值,會有性能損失嗎?
感謝
您可以通過這樣做你的第一個問題:
SELECT
COUNT(field1),
COUNT(DISTINCT field2)
FROM table
(對於你可以做的第一場*如果需要的話算空值)
鮮明的指這個詞的定義。它消除了重複返回的行。
返回2個值而不是1將取決於值是什麼,如果它們是索引或不是其他未確定的可能變量。
如果您在select語句中指的是子查詢,那麼您只能返回1個值。如果你想要多個值,你將不得不使用子查詢作爲連接。
如果內部查詢在SELECT
中內聯,您可能很難選擇多個值。但是,經常可以將JOIN
改爲子查詢;這樣,子查詢可以被命名,你可以得到多個結果
SELECT a.Foo, a.Bar, x.[Count], x.[Avg]
FROM a
INNER JOIN (SELECT COUNT(1) AS [Count], AVG(something) AS [Avg]) x
ON x.Something = a.Something
這可能會有所幫助。
DISTINCT
做它說的。 IIRC,你可以SELECT COUNT(DISTINCT Foo)
等查詢不同的數據。
內部查詢形式:
SELECT * FROM tbl WHERE fld in (SELECT fld2 FROM tbl2 WHERE tbl.fld = tbl2.fld2)
不能返回多行。從輔助查詢中需要多行時,通常需要對另一個查詢執行內部連接。
行:
SELECT count(*), count(distinct *) from table
會返回一個數據集包含兩列一行。第1列是表格中的總行數。第2列僅計算不同的行。
不同意思是返回的數據集不會有任何重複行。區別只能在選擇後直接出現一次。因此,一個查詢,如:
SELECT distinct a, b, c FROM table
可能有這樣的結果:
a1 b1 c1
a1 b1 c2
a1 b2 c2
a1 b3 c2
注意值在整個結果集重複的,但每一行都是唯一的。
我不確定你最後一個問題的含義。您應該從查詢中返回與查詢相關的所有數據。至於更快,只有基準測試可以告訴你哪種方法更快。
您可以通過3種方式返回多個結果(關閉我的頭頂部)
不同的,過濾結果行是唯一的。