sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg forespørge tabel i tabel?

Du kan bruge en variabel til at kontrollere, om det sidste id er lig med det aktuelle id, og i så fald udlæse null eller '' i stedet.

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

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

Bemærk, dette er lidt hacky. Jeg lavede bevidst ClientId til det andet felt, så jeg kunne ændre og returnere clientId-variablen i det samme felt. I andre mere omfattende tilfælde skal du muligvis gøre det i et separat felt. Men for at fjerne dette pladsholderfelt fra resultatet, skal du indlejre hele forespørgslen i et undervalg og definere de ønskede felter i den rigtige rækkefølge på forespørgslen på øverste niveau.



  1. hvordan man bruger LINQ til SQL med mySQL

  2. opdatere med join statement mysql?

  3. Erklæring og initialisering af variabler på samme linje i VBA

  4. BLOB vs. VARCHAR til lagring af arrays i en MySQL-tabel