我使用SQL Server 2008,並嘗試執行包含select請求的存儲過程。 我有一個參數的變量,目的是選擇resquest返回好數據。然而,我得到幾條線是相同的,我不能擺脫我的 選擇請求中的這些行。 我用3個表:表1 ,表2,表3和我嘗試這樣做resquest:如何在select select resquest中對行進行排序,以便不會有多個相同的行
ALTER PROCEDURE [dbo].[bkd_GetContent]
@MonIdPrecis int
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT tb3.Id,tb2.Nom,tb1.MonIdPrecis,tb3.Titre,tb1.Rang,tb3.Image
FROM dbo.Table1 tb1
LEFT JOIN dbo.Table2 tb2 ON tb2.Id = tb1.MonIdPrecis
LEFT JOIN dbo.Table3 tb3 ON tb3.Id = tb1.Id
WHERE tb1.MonIdPrecis = @MonIdPrecis
AND tb2.Activtb2ed = 1
AND tb3.Id IS NOT NULL
ORDER BY tb1.Rang
END
,但我得到與此resquest相同tb3.Id倍數線。 字段圖像可能會更改爲具有相同標識的每個ligne。大多數cas的所有行都是相同的(我沒有把每個表中的所有元素都放在我的select中) 我的目標是獲得幾個不同的tb3.id(這就是爲什麼我嘗試使用DISTINCT) 也試着把COUNT(*) AS ServeralLines
放在我的select和GROUP BY tb3.Id,tb2.Nom,tb1.MonIdPrecis,tb3.Titre,tb1.Rang,tb3.Image
中,但它不適用於每一行。
它是可能的還是存在一個像DISTINCT這樣的關鍵字只適用於一個字段(tb3.Id)?使用tempory表在這種情況下? 我不能刪除無聊的線,給我一個問題。
你有一個想法解決它?
首先,檢查您是否使用正確的連接鍵。 – dario
DISTINCT適用於整個選定的行,而不僅僅是第一列。你必須決定的是當一個tb3.Id值對於其他列,MAX/MIN/SUM/AVG等有不同的值時,預期的結果是什麼?一般的GROUP BY規則如下所示: 如果指定了GROUP BY子句,則SELECT列表中的每個列引用必須標識分組列或作爲set函數的參數。 – jarlh
我同意你的獨特性,但是可以僅在一個字段上使用相同的東西,而不必看其他的東西? – Julien698