使用WHERE子句仅选择TOP值

时间:2018-02-14 16:38:39

标签: mysql sql greatest-n-per-group

在我的SQLFiddle Here

我尝试SELECT ROW s WHERE i.id = 1 value,然后{{1}等等。

所以在我的查询

i.id = 2

我得到了行

SELECT
i.`item`, v.`nom`, v.`value`
FROM `items` i
LEFT JOIN `values` v ON v.`item_id` = i.`id`
WHERE
i.`id` IS NOT NULL 
  AND
CASE
  WHEN i.`id` = 1 THEN 1
  WHEN i.`id` = 2 THEN 2
  ELSE 3
END
ORDER BY 
CASE
  WHEN i.`id` = 1 THEN 1
  WHEN i.`id` = 2 THEN 2
  ELSE 3
END
, v.`value` DESC;

但我想得到的只是item nom value C1 C12 7 C1 C11 4 C2 C21 9 C2 C22 8 C4 C41 44 C4 C42 13 C5 C52 12 C5 C51 8 C3 C31 3 C3 C32 2 值,所以它变为

TOP

要清除更多内容,我希望每个item nom value C1 C12 7 C2 C21 9 C4 C41 44 的每个SELECTTOP

然后i.id SELECT SELECT i.id之后的TOP最高Table值,i.id

以防万一3 SELECT i.`item`, v.`nom`, v.`value` FROM `items` i LEFT JOIN `values` v ON v.`item_id` = i.`id` WHERE i.`id` IS NOT NULL AND CASE WHEN i.`id` = 1 AND TOP(v.`value`) THEN 1 WHEN i.`id` = 2 AND TOP(v.`value`) THEN 2 ELSE TOP(v.`value`) 3 END ORDER BY CASE WHEN i.`id` = 1 THEN 1 WHEN i.`id` = 2 THEN 2 ELSE 3 END 都不存在。

我该怎么做?查询总体上是好还是坏?我可以更优化它吗?

我没有尝试按ID检索最后记录,但是按值计算最高记录,比如

a=data.frame(replicate(1000,sample(0:1,10,rep=TRUE)))
View(a)

0 个答案:

没有答案