Destinct包含10列唯一的一列记录

时间:2017-10-03 13:32:05

标签: mysql database phpmyadmin

我的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

Table

谢谢。

1 个答案:

答案 0 :(得分: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上添加另一个条件(例如:日期)