Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle:Ляво съединяване на много голяма таблица и ограничаване на съединените редове до един с най-голямата стойност на полето

опитайте това

SELECT m.*,
       (select s.s_field 
          from t_sub s
         where s.m_id = m.m_id
           and s.s_order = (select max(s_order) from t_sub where t_sub.m_id = s.m_id)
           and rownum = 1)
FROM t_main m

или можете да опитате това (това е вашият код, но има някои модификации)

SELECT m.*,
      (select s.s_field from 
       (SELECT s_field, m_id
          FROM t_sub
         --where t_sub.m_id = m.m_id
         order by s_order DESC) s
        where s.m_id = m.m_id
          and rownum = 1)
FROM t_main m


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на Oracle Cursor с помощта на Java програма

  2. TNS:слушателят в момента не знае за услугата, поискана в дескриптора за свързване

  3. Материализирани изгледи - Идентифициране на последното опресняване

  4. как да накарам sql разработчика да показва правилно неанглийски символ вместо показване на квадрати?

  5. Как да добавя интервал пред моя номер, ако е едноцифрен?