我的 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
已经谢谢了。
使用变量为每个
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
(例如:日期)