【发布时间】:2014-06-03 18:02:39
【问题描述】:
我正在尝试使用此代码构建视图:
SELECT *
FROM `ergebnis`
LEFT JOIN (
SELECT `NR` AS `MESSWERT_NR`, `ERGEBNISNUMMER`,`TESTSTEPREIHENFOLGE`, `MESSBEZEICHNUNG`, `STEP_BEZEICHNUNG`, `MESSWERT`, `MESSERGEBNIS`
FROM (
SELECT *
FROM `messwerte`
ORDER BY `NR` DESC
) AS `f_messwerte`
GROUP BY `ERGEBNISNUMMER`,`TESTSTEPREIHENFOLGE`
ORDER BY `ERGEBNISNUMMER`,`TESTSTEPREIHENFOLGE`
) AS `t_messwerte`
ON (`t_messwerte`.`ERGEBNISNUMMER` = `ergebnis`.`NR`)
ORDER BY `NR` DESC,`TESTSTEPREIHENFOLGE`;
如您所见,它在很大程度上依赖于 Messwerte 中的 ORDER 指令,它将根据该指令进行分组。但是 VIEW 中不允许有子查询。
假设这是我的源表:
NR ERGEBNISNUMMER TESTSTEPREIHENFOLGE MESSWERT
1 1 1 80
2 1 1 86
3 1 2 306
4 1 2 302
5 1 2 304
6 1 3 0.2
7 2 1 81
8 2 1 79
9 2 1 80
10 2 2 305
11 2 2 301
12 2 3 0.1
13 2 3 0.3
这就是我想要的:
NR ERGEBNISNUMMER TESTSTEPREIHENFOLGE MESSWERT
13 2 3 0.3
11 2 2 301
9 2 1 80
6 1 3 0.2
5 1 2 304
2 1 1 86
我尝试使用多个 VIEW,但 ORDER 总是丢失,我没有得到 NR 最高的条目。
有人可以告诉我如何解决这个问题吗?
提前致谢!
【问题讨论】:
-
是的,这不好 - 这也是未记录的行为(除非您计算手册的 user-cmets 部分)。