我的SQL查询来获取使用GROUP BY函数中间行值(My sql query to get mid

2019-07-18 11:48发布

我的数据库结构是一样

Id     Price     Code
1      0.12      93
2      0.13      93
3      0.54      93
4      0.96      93
5      0.10      94
6      0.30      94
7      0.90      94
8      1.40      94
9      2.30      94

我要取使用GROUP BY码的数据,我想中间行作为输出。 在上述例子中我想要的输出作为

Id     Price     Code
3      0.54      93
7      0.90      94

上述的是,我想与中间行或具有像行的情况下,计数在4,6,8两个中间行的情况下最高价格值的行的输出

Answer 1:

SELECT table1.* 
FROM table1
JOIN (
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX( GROUP_CONCAT(id ORDER BY id ASC), ',', CEIL(COUNT(*) / 2) ), ',', -1) AS id
    FROM table1
    GROUP BY CODE
) t USING(id) 

http://sqlfiddle.com/#!2/fdc22/14



Answer 2:

它可以通过一些技巧来完成。

SELECT id, 
       price, 
       code 
FROM   table1 
WHERE  id IN (SELECT Ceil(Avg(id)) AS `id` 
              FROM   table1 
              GROUP  BY code); 

SQLFiddle



文章来源: My sql query to get middle row values using GROUP BY function
标签: php mysql mysqli