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

MySQL:Мога ли да направя ляво присъединяване и да изтегля само един ред от таблицата за присъединяване?

Позволете ми да обобщя това, което разбрах:бихте искали да изберете всеки билет и последното му решение.

Харесва ми да използвам следния модел за този вид въпроси, тъй като избягва модела на подзаявката и следователно е доста добър, когато е необходима производителност. Недостатъкът е, че е малко трудно да се разбере:

SELECT
  t.*,
  s1.*
FROM tickets t
INNER JOIN solutions s1 ON t.id = s1.ticket_id
LEFT JOIN solutions s2 ON s1.ticket_id = s2.ticket_id AND s2.id > s1.id
WHERE s2.id IS NULL;

Написах само сърцето на шаблона за по-добро разбиране.

Ключовете са:

  • LEFT JOIN на solutions таблица със себе си с s1.ticket_id = s2.ticket_id условие:емулира GROUP BY ticket_id .

  • условието s2.id > s1.id :това е SQL за "Искам само последното решение", той емулира MAX() . Предполагах, че във вашия модел, the last означава with the greatest id но можете да използвате тук условие за датата. Имайте предвид, че s2.id < s1.id ще ви даде първото решение.

  • клаузата WHERE s2.id IS NULL :най-странното, но абсолютно необходимо... съхранява само записите, които искате.

Опитайте и ме уведомете :)

Редактиране 1: Току-що разбрах, че второто предположение опростява проблема. Това го прави още по-интересно :p Опитвам се да видя как този модел може да работи с вашия date, id поръчване.

Редактиране 2: Добре, работи чудесно с малко обрат. Условието на LEFT JOIN става:

LEFT JOIN solutions s2 ON s1.ticket_id = s2.ticket_id
  AND (s2.date > s1.date OR (s2.date = s1.date AND s2.id > s1.id))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP и MySQL:Подредете по най-новата дата и ограничение 10

  2. SQL Server предлага ли нещо като MySQL ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ

  3. Как да покажа схемата на таблица в MySQL база данни?

  4. MySQL CAST като DATE

  5. Изчисляване на общия размер на данните на BLOB колона в таблица