sql >> Databáze >  >> RDS >> Mysql

Jak mohu dotazovat tabulku v tabulce?

Pro kontrolu, zda se poslední id rovná aktuálnímu id, můžete použít proměnnou, a v takovém případě vypsat místo toho hodnotu null nebo ''.

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

Příklad:http://sqlfiddle.com/#!2/658e4c/6

Všimněte si, že je to trochu hackerské. Záměrně jsem udělal ClientId jako druhé pole, abych mohl změnit a vrátit proměnnou clientId ve stejném poli. V jiných, propracovanějších případech to možná budete muset udělat v samostatném poli. Chcete-li však toto zástupné pole z výsledku odstranit, budete muset vložit celý dotaz do dílčího výběru a definovat požadovaná pole ve správném pořadí v dotazu nejvyšší úrovně.



  1. Jak zvýšit maximální počet připojení v MySQL

  2. Spouštěč MySQL před kontrolou vložení hodnoty

  3. Význam hranatých závorek [] v návrháři tabulek MS-SQL?

  4. Chyba při provádění mvn sql:execute