一列有10条不同的记录

问题描述 投票:0回答:1

我的 SQL 查询有问题。我正在尝试获取下图的结果,但我只希望 @tag_names 其中一些重复项仅显示 10 次。有没有像 DISTINCT 一样工作的语句,但每个唯一的@tag_name 有 10 条记录?

我已经试过了,但没有成功:

SELECT DISTINCT tag_name
              , int_value
              , real_value
              , bool_value
              , datetime 
           FROM waardes 
          WHERE machine_id LIKE 3 
          GROUP 
             BY tag_name 
          ORDER 
             BY tag_name

已经谢谢了。

mysql database phpmyadmin
1个回答
0
投票

使用变量为每个

tag_name
数10。

SELECT *
FROM (
      SELECT *,
             @rn := if( @tag_name = tag_name,
                        @rn + 1,
                        if(@tag_name := tag_name, 1, 1)
                      ) as tag_count
      FROM waardes 
      CROSS JOIN ( SELECT @rn := 0, @tag_name := '') as vars
      ORDER BY tag_name
     ) as T          
WHERE tag_count <= 10

意识到你在这里订购了

tag_name
所以10个是随机的,如果你想更具体添加另一个条件
ORDER
(例如:日期)

© www.soinside.com 2019 - 2024. All rights reserved.