我有一个包含数据的表,我正在尝试选择一些值小于最大值的值。我使用的是ibexpert,我需要在sql中完成这项工作,因为我正在处理firebird数据库。我的桌子是这样的:
UID TYP ID_RODZICA ID_DZIALKI PRZED_PO GRUPA DTW OSOW DTU OSOU
17Â 170 K 5Â 765 3Â 551 0 1
163Â 759 N 5Â 765 53Â 084 0 1 29.03.2018 11:45 21
163Â 760 N 5Â 765 49Â 796 1 1 29.03.2018 11:45 21
163Â 761 N 5Â 765 49Â 426 1 1 29.03.2018 11:45 21
163Â 762 N 5Â 765 53Â 085 1 1 29.03.2018 11:45 21
163Â 763 N 5Â 765 53Â 086 1 1 29.03.2018 11:45 21
163Â 764 N 5Â 765 53Â 087 0 2 29.03.2018 11:45 21
163Â 765 N 5Â 765 53Â 088 0 2 29.03.2018 11:45 21
163Â 766 N 5Â 765 8Â 940 0 2 29.03.2018 11:45 21
163Â 767 N 5Â 765 41Â 931 0 2 29.03.2018 11:45 21
253Â 171 N 5Â 765 41Â 931 0 3 29.03.2018 21:14 21
253Â 172 N 5Â 765 53Â 088 0 3 29.03.2018 21:14 21
253Â 173 N 5Â 765 8Â 940 0 3 29.03.2018 21:14 21
253Â 174 N 5Â 765 49Â 796 0 3 29.03.2018 21:14 21
253Â 175 N 5Â 765 49Â 426 0 3 29.03.2018 21:14 21
253Â 176 N 5Â 765 53Â 085 0 3 29.03.2018 21:14 21
253Â 177 N 5Â 765 53Â 086 0 3 29.03.2018 21:14 21
253Â 178 N 5Â 765 67Â 386 0 3 29.03.2018 21:14 21
253Â 179 N 5Â 765 67Â 387 0 3 29.03.2018 21:14 21
253Â 180 N 5Â 765 67Â 388 0 3 29.03.2018 21:14 21
我只想选择GRUPA值低于最大值的行,这里的最大值是3,但有时可能是5、7、11或其他值,所以无法指定值。
应该是这样的:
UID TYP ID_RODZICA ID_DZIALKI PRZED_PO GRUPA DTW OSOW DTU OSOU
17Â 170 K 5Â 765 3Â 551 0 1
163Â 759 N 5Â 765 53Â 084 0 1 29.03.2018 11:45 21
163Â 760 N 5Â 765 49Â 796 1 1 29.03.2018 11:45 21
163Â 761 N 5Â 765 49Â 426 1 1 29.03.2018 11:45 21
163Â 762 N 5Â 765 53Â 085 1 1 29.03.2018 11:45 21
163Â 763 N 5Â 765 53Â 086 1 1 29.03.2018 11:45 21
163Â 764 N 5Â 765 53Â 087 0 2 29.03.2018 11:45 21
163Â 765 N 5Â 765 53Â 088 0 2 29.03.2018 11:45 21
163Â 766 N 5Â 765 8Â 940 0 2 29.03.2018 11:45 21
163Â 767 N 5Â 765 41Â 931 0 2 29.03.2018 11:45 21
我试过:
SELECT c1.*
FROM (select * FROM obdg where ID_RODZICA = '5765') c1
WHERE NOT EXISTS
(SELECT c2.*
FROM (select * from obdg WHERE ID_RODZICA = '5765') c2
WHERE c1.GRUPA = MAXVALUE(c2.GRUPA))
去掉最大值,但结果就是什么都没有。当我在maxvalue(c2.grupa)之前使用<而不是=时,我得到:
UID TYP ID_RODZICA ID_DZIALKI PRZED_PO GRUPA DTW OSOW DTU OSOU
253Â 171 N 5Â 765 41Â 931 0 3 29.03.2018 21:14 21
253Â 172 N 5Â 765 53Â 088 0 3 29.03.2018 21:14 21
253Â 173 N 5Â 765 8Â 940 0 3 29.03.2018 21:14 21
253Â 174 N 5Â 765 49Â 796 0 3 29.03.2018 21:14 21
253Â 175 N 5Â 765 49Â 426 0 3 29.03.2018 21:14 21
253Â 176 N 5Â 765 53Â 085 0 3 29.03.2018 21:14 21
253Â 177 N 5Â 765 53Â 086 0 3 29.03.2018 21:14 21
253Â 178 N 5Â 765 67Â 386 0 3 29.03.2018 21:14 21
253Â 179 N 5Â 765 67Â 387 0 3 29.03.2018 21:14 21
253Â 180 N 5Â 765 67Â 388 0 3 29.03.2018 21:14 21
显然,因为我正在消除所有低于max的值(据我所知)。
我还尝试了更简单的方法:
SELECT * FROM OBDG
WHERE ID_RODZICA = '5765' AND GRUPA < MAXVALUE(GRUPA)
但我在结果窗口里什么也没得到。如果我将“max value(grupa)”更改为“3”,我将得到预期的结果,但同样,我无法指定最大值。
我做错什么了?