sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag fråga tabell i tabell?

Du kan använda en variabel för att kontrollera om det sista ID:t är lika med det aktuella ID:t, och i så fall mata ut null eller '' istället.

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

Exempel:http://sqlfiddle.com/#!2/658e4c/6

Obs, det här är lite hackigt. Jag gjorde medvetet ClientId till det andra fältet, så att jag kunde ändra och returnera variabeln clientId i samma fält. I andra mer komplicerade fall kan du behöva göra det i ett separat fält. Men för att eliminera det platshållarfältet från resultatet måste du bädda in hela frågan i ett underval och definiera de önskade fälten i rätt ordning på den översta nivån.



  1. javafx-anslutning till mysql

  2. FEL 1118 (42000) Radstorleken är för stor

  3. Ger PDO fetch() ett undantag vid misslyckande?

  4. Spring Boot MySql Access nekad för användaren 'root'@'localhost'