Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa menanyakan tabel di dalam tabel?

Anda dapat menggunakan variabel untuk memeriksa apakah id terakhir sama dengan id saat ini, dan dalam hal ini keluaran null atau '' sebagai gantinya.

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

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

Catatan, ini agak hacky. Saya sengaja menjadikan ClientId sebagai bidang kedua, sehingga saya dapat mengubah dan mengembalikan variabel clientId di bidang yang sama. Dalam kasus lain yang lebih rumit, Anda mungkin harus melakukannya di bidang terpisah. Namun untuk menghilangkan bidang placeholder dari hasil, Anda harus menyematkan seluruh kueri dalam subpilihan, dan menentukan bidang yang diinginkan dalam urutan yang benar pada kueri tingkat atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Database MySQL di cPanel

  2. memperbarui massal daftar nilai dari daftar id

  3. Konversi SQL ke SQL alkimia

  4. cari catatan-catatan yang memiliki nilai kolom berisi tanda % di mysql

  5. Bagaimana menemukan apakah nama kolom adalah kata kunci yang dicadangkan di berbagai basis data