簡體   English   中英

僅按兩個不同列中的一個排序

[英]Order by only one, of two distinct columns

我在同一個聲明中選擇了ColA和ColB:

select distinct ColA, ColB, EDITABLE from TableA;

我想使用ORDER BY lower(ColA) ,因為我想按字母順序對ColA進行排序,而不考慮大小寫。 ColB不需要對此排序產生影響,我只想對ColA進行排序(需要區分ColA,因為ColA中有許多相同值的實例)。

我試過了

select distinct ColA, ColB, EDITABLE
from TableA
ORDER BY lower(ColA)

並且當我嘗試時,也看到了關於明顯和秩序的這個問題

select distinct ColA, ColB, lower(ColA), EDITABLE
from TableA
GROUP BY ColA
ORDER BY lower(ColA) ASC, ColA

我無法執行上述聲明。 我是SQL的新手,並且會喜歡為什么這不起作用的一些提示,並幫助我可以改進這個聲明

提及所有在列Group By ,你是Select ING

在SQLServer中,它就像:

select distinct ColA, ColB, lower(ColA)
from TableA
GROUP BY ColA, ColB, lower(ColA)
ORDER BY lower(ColA) ASC

您引用的問題不適用於您的問題。 在該問題中,還有另一列用於排序,一列不在原始select distinct 在您的情況下, order by使用其中一個原始列上的函數。 應該不需要在SELECT重復表達式。

您還可以使用group by

select ColA, ColB, EDITABLE
from TableA
group by ColA, ColB, EDITABLE
order by lower(ColA);

這是您的查詢:

select distinct ColA, ColB, lower(ColA), EDITABLE
from TableA
GROUP BY ColA
ORDER BY lower(ColA) ASC, ColA

這就是它的作用:

1.   FROM clause: select rows from TableA.
2.   GROUP BY clause: Aggregate rows so as to get one row per ColA.
3.   SELECT clause:
3.1.   Show ColA. This is okay, ColA is what you group by.
3.2.   Show ColB. Which? There can be diferent ColB per ColA. This produces an error.
3.3.   Show lower(ColA). That is okay. You group by ColA, so lower(ColA) is also known.
3.4.   Show EDITABLE. Again: which? There can be diferent EDITABLE per ColA.
3.5.   DISTINCT: remove duplicate rows. This is superfluous, because there cannot be
       duplicate rows. They all have different ColA.
4.   ORDER BY clause:
4.1.   Sort by lower(ColA), so you have 'John' and 'john' together.
4.2.   Sort by ColA. This tells the DBMS whther to put 'John' or 'john' first.

我希望這能解釋查詢是如何執行的, GROUP BY執行的操作以及SELECT子句中允許的內容。 DISTINCT通常是編寫錯誤查詢的標志。 在這里它只是多余的,但通常它被用作防止導致重復行的不良連接的一些防御。 每當你看到SELECT DISTINCT問問自己是什么使它成為必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM