SQL 筆記 - GROUP BY, DELETE FROM, Remoting Format

July 18, 2021

這篇文章會簡介 SQL 中 GROUP BY 中常忽略的欄位說明、刪除資料時要如何搭配篩選條件,以及 T-SQL 資料傳輸的格式。

GROUP BY

  • 使用 GROUP BY 時,需要包含非彙總函數以外的所有欄位,否則會產生 MSG 8120 錯誤。
SELECT ID, Name, SUM(Score)
FROM Student
GROUP BY ID

以上的語法會出現錯誤,需改成以下語法:

SELECT ID, Name, SUM(Score)
FROM [Student]
GROUP BY ID, Name

DELETE FROM 搭配篩選條件

  • 在一般使用 DELETE FROM 時,通常會使用以下的方式篩選出需要刪除的資料。
DELETE FROM [Table_Name]
WHERE Column_Name operator value
  • 如果想要用更複雜的條件過濾需刪除的資料,如刪除在別的資料表中存在的資料,可以用 DELETE FROM + SELECT 子句,例如以下查詢語句。
DELETE FROM [Table_1]
WHERE RowID IN (
  SELECT RowID FROM [Table_1]
  WHERE RowID NOT EXISTS IN (
    SELECT ID FROM [Table_2]
  )
)

資料傳輸

  • 適用於 ADO.NET 中,要傳輸 DataTable 的情形。
  • 當傳送 DataTable 時,若為本機至遠端,可使用 RemotingFormat 屬性搭配 BinaryFormatter 序列化 DataTable,減少傳輸的檔案大小。
  • 參考資料: Reincarnation of DataTable in ADO.NET 2.0