Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để truy vấn bảng trong bảng?

Bạn có thể sử dụng một biến để kiểm tra xem id cuối cùng có bằng với id hiện tại hay không và trong trường hợp đó xuất ra null hoặc '' để thay thế.

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

Ví dụ: http://sqlfiddle.com/#!2/658e4c/6

Lưu ý, điều này là một chút hacky. Tôi đã cố tình đặt ClientId thành trường thứ hai, vì vậy tôi có thể thay đổi và trả về biến clientId trong cùng một trường. Trong các trường hợp khác, phức tạp hơn, bạn có thể phải làm điều đó trong một trường riêng biệt. Nhưng để loại bỏ trường giữ chỗ đó khỏi kết quả, bạn sẽ phải nhúng toàn bộ truy vấn vào một lựa chọn phụ và xác định các trường mong muốn theo đúng thứ tự trên truy vấn cấp cao nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách di chuyển Moodle độc ​​lập sang thiết lập có thể mở rộng cơ sở dữ liệu theo cụm

  2. Thực thi nhiều truy vấn xóa sql trong mysql cho php

  3. MYSQL bên trong Tham gia hai bảng trên hai khóa

  4. Tự động hoàn thành trong máy khách dòng lệnh MySQL

  5. MySQL InnoDB:Sự khác biệt giữa `FOR UPDATE` và` LOCK IN SHARE MODE`