簡體   English   中英

MySQL-兩個查詢之間的差異

[英]MySQL - Difference between two queries

(SELECT * FROM (SELECT clientid,totalquantity from clientquantity 
order by quantitydate desc) AS A GROUP BY clientid);

SELECT clientid,totalquantity from clientquantity group by clientid;

有人可以解釋一下上面兩個查詢之間的區別嗎? 結果集在計數行方面是相同的。 那么,這兩個查詢之間有區別嗎? 例如,明智的表現還是數據差異?

第一個查詢與另一個表一起用作LEFT JOIN查詢的一部分。 為了簡化這篇文章,我刪除了另一個表。

以上是因為第二個查詢也需要包含一個ORDER BY,而使用SQL的唯一方法就是像在第一個查詢中那樣進行操作? 我從第二個查詢中省略了ORDER BY,但是第二個查詢中也需要它。

謝謝,

選中此SQL FIDDLE DEMO以了解您的兩個查詢之間的區別。

  1. 當您按日期將數據按降序使用排序,然后使用clientId將數據分組時,它將檢索所有按日期最新的客戶端數據。

  2. 如果直接使用GROUP BY子句,則它將按clientId從表中獲取每個第一條記錄。

第一個查詢(SELECT * FROM (SELECT clientid,totalquantity from clientquantity order by quantitydate desc) AS A GROUP BY clientid); (對我來說)有多余的部分。 查詢的最深部分( SELECT clientId,totalquantity... )從表本身獲取按數量日期排序的所有信息。 查詢的第二部分是SELECT * FROM ... ,它只是說“將所有數據從內部結果集中提取到我的結果集中”。 最后一部分是獲取結果集,並按客戶端ID對其進行分組。

第二個查詢SELECT clientid,totalquantity from clientquantity group by clientid; 幾乎執行完全相同的操作,但更簡潔:它獲取clientid和totalquantity顏色,並按client id將其分組。 唯一的區別是,它沒有按數量日期降序對它進行排序

執行時,它們實際上將執行相同的操作(行順序將有所不同),但是您的數據庫引擎應該足夠聰明,以使兩者的性能也幾乎相同。 至於可讀性,我將在group by語句之前使用ORDER BY quantitydate DESC上的第二個查詢和定位,以便與第一個查詢執行相同的操作(當然,除非您不希望將其排序)。

暫無
暫無

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

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