Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę przeszukiwać tabelę w tabeli?

Możesz użyć zmiennej, aby sprawdzić, czy ostatni identyfikator jest równy bieżącemu, i w takim przypadku zamiast tego wypisz null lub ''.

select
  case when c.ClientId <> @clientid then c.Name else '' end as ClientName,
  case when c.ClientId <> @clientid then @ClientId := c.ClientId else '' end as ClientId,
  p.ContactId,
  p.Name as ContactName
from
  Clients c
  inner join Contacts p on p.ClientId = c.Clientid
  , (select @clientid := -1) x
order by
  c.ClientId, p.ContactId

Przykład:http://sqlfiddle.com/#!2/658e4c/6

Uwaga, jest to trochę zwariowane. Celowo zrobiłem ClientId jako drugie pole, aby móc zmienić i zwrócić zmienną clientId w tym samym polu. W innych, bardziej skomplikowanych przypadkach, być może będziesz musiał to zrobić w osobnym polu. Ale aby wyeliminować to pole zastępcze z wyniku, musisz osadzić całe zapytanie w podselekcji i zdefiniować żądane pola we właściwej kolejności w zapytaniu najwyższego poziomu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zduplikowany wpis na INSERT po DELETE z tabeli w transakcji

  2. Jak zmienić czas?

  3. Zmień kolejność / zresetuj klucz główny automatycznego przyrostu

  4. Lepszy sposób na wygenerowanie tej tablicy json z danych MySql za pomocą php

  5. php + mysql + mapa google