sql >> Database >  >> RDS >> Mysql

Hoe kan ik een tabel in een tabel opvragen?

Je kunt een variabele gebruiken om te controleren of de laatste id gelijk is aan de huidige id, en in dat geval in plaats daarvan null of '' uitvoeren.

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

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

Let op, dit is een beetje hacky. Ik heb met opzet ClientId het tweede veld gemaakt, zodat ik de clientId-variabele in hetzelfde veld kon wijzigen en retourneren. In andere, meer uitgebreide gevallen moet u dat wellicht in een apart veld doen. Maar om dat tijdelijke veld uit het resultaat te verwijderen, moet u de hele query insluiten in een subselectie en de gewenste velden in de juiste volgorde definiëren op de bovenste query.



  1. Efficiënter om meer kolommen of meer rijen te hebben?

  2. Mysql 5.5 LOAD DATA INFILE Machtigingen

  3. Webchattoepassing met behulp van Long-Polling-technologie met PHP, MySQL en jQuery

  4. Een database openen in de exclusieve modus in Access 2016