簡體   English   中英

從MAX(ID),MIN(ID)MYSQL查詢獲取更多信息?

[英]Get more info from a MAX(ID), MIN(ID) MYSQL query?

如何從MAX(ID), MIN(ID) MYSQL查詢中獲取更多列?

目前我只得到兩個值:來自此查詢的MAX(ID) & MIN(ID)

SELECT MIN(ID), MAX(ID) FROM mytable WHERE mytable.series = 'white' ;

需要得到像這樣的偽查詢:

SELECT  column1, column2
FROM    mytable 
WHERE   series = 'white'
AND ID=Max(ID)
'AND GET ME ALSO'
WHERE   series = 'white'
AND ID=Min(ID);`

對於“系列”列,它應返回2行,等於“白色”。

第1列為column1,第2列為ID = Min(ID)。 第2列為column1,第2列為ID = Max(ID)。

但是怎么樣?

這是一種使用UNION的方法:

SELECT column1, column2
FROM mytable
WHERE series = 'white' AND ID IN
(    
    SELECT MIN(ID) FROM mytable WHERE series = 'white'
    UNION
    SELECT MAX(ID) FROM mytable WHERE series = 'white'
)

為了獲得良好的性能,請在(series, id)上添加組合索引。

或者可能具有更好性能的另一種變體:

(
    SELECT column1, column2
    FROM mytable
    WHERE series = 'white'
    ORDER BY ID
    LIMIT 1
)
UNION
(
    SELECT column1, column2
    FROM mytable
    WHERE series = 'white'
    ORDER BY ID DESC
    LIMIT 1
)

這也可以在(series, id)上使用組合索引。

更簡單的解決方案:

SELECT a.column1, a.column2
FROM   mytable a
JOIN   (
       SELECT MIN(ID) AS minid, MAX(ID) AS maxid
       FROM   mytable
       WHERE  series = 'white'
       ) b ON a.ID IN (b.minid, b.maxid)

就像你說的那樣:

SELECT
  column1, column2
FROM 
  mytable as m, 
  (SELECT MIN(ID) as mid, MAX(ID) as xid 
   FROM mytable WHERE mytable.series = 'white'
   ) t
WHERE 
  m.ID = t.mid or m.ID = t.xid;

括號中的select是內部選擇,您可以像使用另一個表一樣使用。

暫無
暫無

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

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