在我的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
的每个SELECT
值TOP
,
然后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)