有人給我發送了一個SQL查詢,其中GROUP BY
子句由以下語句組成:GROUP BY 1
。SQL子句「GROUP BY 1」是什麼意思?
這必須是一個錯字嗎?沒有列給別名1.這意味着什麼?我是否有權假定這肯定是一個錯字?
有人給我發送了一個SQL查詢,其中GROUP BY
子句由以下語句組成:GROUP BY 1
。SQL子句「GROUP BY 1」是什麼意思?
這必須是一個錯字嗎?沒有列給別名1.這意味着什麼?我是否有權假定這肯定是一個錯字?
它通過無論它叫什麼第一列是指組。您也可以使用ORDER BY
。
它將由第一場中的選擇子句
SELECT account_id, open_emp_id
^^^^ ^^^^
1 2
FROM account
GROUP BY 1;
在上述查詢GROUP BY 1
組指first column in select statement
這是 account_id
。
您還可以在ORDER BY
指定。
Note : The number in ORDER BY and GROUP BY always start with 1 not with 0.
它會被你的組後就把by子句中的列位置組。
例如,如果您運行'SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1
' 它將按SALESMAN_NAME
分組。
這樣做的一個風險是如果您運行'Select *
',並且出於某種原因您使用不同順序的列重新創建表格,它會給出與您預期不同的結果。
,通過在你的SELECT子句中第一列是指SQL組,我們總是與ORDER BY 1
使用GROUP BY 1
在一起,除了你也可以使用這樣GROUP BY 1,2,3..
,當然是方便了我們,但需要注意的是條件結果可能不是你想要什麼,如果有人修改了你的選擇列,它不是可視化
它不是一個錯字,這是你的結果的第一列設置 – Lamak
注意,這個語法是不可移植。它在MySQL以外的數據庫上的表現會有所不同。例如,在Oracle中,它被視爲一個常量。 –
@RussellReed是的。不幸的是(因爲使用別名有時非常有用),ansi sql不允許按列序號進行分組。原因在於該組是在投影之前發生的。但是,接下來......當我們用幾十行來分組表達式時,我們最終得到了.. *多行數據*。 – javadba