該表包含許多行,並且所有列都包含相同的數據。對於實例:SQL Select If Then
FullName Gender DOB
---------------------------------
Mary Jones Female 2012-05-01
我想爲每個人選擇一行以顯示在報告中。我認爲最簡單的方法可能是給我們一個if語句來檢查下一行是否與第一個唯一行相同。
該表包含許多行,並且所有列都包含相同的數據。對於實例:SQL Select If Then
FullName Gender DOB
---------------------------------
Mary Jones Female 2012-05-01
我想爲每個人選擇一行以顯示在報告中。我認爲最簡單的方法可能是給我們一個if語句來檢查下一行是否與第一個唯一行相同。
正如其他人所說,因爲所有的行都是一樣的,你可以使用不同的關鍵字:
SELECT DISTINCT <columns>
FROM table
但是,你很可能會發現,這些重複記錄的原因是,至少有一個表中某處的列是不同的。在這種情況下,您可能需要使用GROUP BY來代替:
SELECT <columns>
FROM table
GROUP BY <columns>
如果你需要顯示的數據不是分組列的一部分,您只列出匹配在GROUP BY子句中的列,然後你必須使用聚合函數或子查詢將唯一列中的數據引入選擇列表。 GROUP BY查詢可能會變得非常複雜並且讓您的頭部受傷。
如果這些列確實是一致的,那麼您的模式或應用程序設計中的某些內容是不正確的。你很少會在桌面上真正重複記錄,而這很可能意味着某些事情是錯誤的。
最後,我需要評論你的IF/THEN請求。 這個想法是離開的。 SQL有一個基於SET的或聲明式編程風格。考慮使用程序的問題像IF/THEN這樣的工具只會導致問題。即使你確實需要一個條件表達式,在SQL語句中執行它的方式也是通過CASE
表達式。
如果數據中的所有列一樣,那麼你可以使用關鍵字DISTINCT
:
SELECT DISTINCT FullName, Gender, DOB
FROM yourtable
這將檢查所有字段中的數據是唯一消除任何重複。
另一種方式來寫這個是用在所有領域GROUP BY
:
SELECT FullName, Gender, DOB
FROM yourtable
GROUP BY FullName, Gender, DOB
你應該使用不同的條款,而不是..如果所有列實際上完全一樣。
select distinct FullName, Gender, DOB
from <your_table_name>;
有重複行通常是一些錯誤的標誌(也可以是數據被加載多次)。您可能需要調查以查看實際原因。
謝謝。非常徹底的答案! – Susan