Oracle GROUP BY没有按预期工作

时间:2016-05-29 20:48:57

标签: php sql oracle

我得到了这样的SQL查询:

SELECT Z.ID,
       Z.ZADAVATEL,
       Z.DATUM_ZADANI,
       Z.LIN_OBL,
       Z.DRUH_ZMENY,
       Z.CISLO_ZMENY,
       Z.PRILOHY
FROM   ZMENY Z
       JOIN ZMENY_DILY ZD
       ON (ZD.ID_ZMENY=Z.ID)
WHERE  1=1 %sql
ORDER BY Z.ID DESC %lmt%ofs

表ZMENY有9行,ZMENY_DILY有11行。问题是我得到11行,但其中2行是重复的行,我试图摆脱这两个重复,我试图使用

GROUP BY Z.ID

不幸甲骨文说: ORA-00979:不是GROUP BY表达

我对甲骨文不太了解,我想MySQL不会有任何问题......任何提示?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要分组,您可以使用select distinct

SELECT distinct  
    Z.ID, 
    Z.ZADAVATEL, 
    Z.DATUM_ZADANI,
    Z.LIN_OBL,
    Z.DRUH_ZMENY,
    Z.CISLO_ZMENY,
    Z.PRILOHY 
FROM ZMENY Z JOIN ZMENY_DILY ZD ON (ZD.ID_ZMENY=Z.ID)
ORDER BY Z.ID DESC %lmt%ofs

答案 1 :(得分:0)

您可以使用select distinct,假设所有列都是重复的:

SELECT DISTINCT Z.ID, Z.ZADAVATEL, Z.DATUM_ZADANI, Z.LIN_OBL,
       Z.DRUH_ZMENY, Z.CISLO_ZMENY, Z.PRILOHY
FROM ZMENY Z JOIN
     ZMENY_DILY ZD
     ON ZD.ID_ZMENY = Z.ID
WHERE  1=1 -- %sql ???
ORDER BY Z.ID DESC;

或者,您可以使用IN

SELECT z.*
FROM ZMENY Z
WHERE Z.ID IN (SELECT ID_ZMENY FROM ZMENY_DILY ZD)
ORDER BY Z.ID DESC;