我的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
谢谢。
答案 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
上添加另一个条件(例如:日期)