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

Kỹ thuật Pure-SQL để đánh số tự động các hàng trong tập kết quả

Để có một số hàng có ý nghĩa, bạn cần phải sắp xếp các kết quả của mình. Sau đó, bạn có thể làm điều gì đó như sau:

SELECT id, name
    , (SELECT COUNT(*) FROM people p2 WHERE name='Spiewak' AND p2.id <= p1.id) AS RowNumber
FROM people p1
WHERE name = 'Spiewak'
ORDER BY id

Lưu ý rằng mệnh đề WHERE của truy vấn phụ cần khớp với mệnh đề WHERE hoặc khóa chính từ truy vấn chính ORDER BY của truy vấn chính.

SQL Server có cấu trúc ROW_NUMBER () OVER để đơn giản hóa điều này, nhưng tôi không biết MySQL có điều gì đặc biệt để giải quyết nó hay không.

Vì bài đăng của tôi ở đây đã được chấp nhận là câu trả lời, nên tôi cũng muốn nêu ra phản hồi của Dan Goldstein, cách tiếp cận rất giống nhưng sử dụng JOIN thay vì truy vấn phụ và thường sẽ hoạt động tốt hơn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Quyền truy cập bị từ chối đối với người dùng 'test' @ 'localhost' (sử dụng mật khẩu:CÓ) ngoại trừ người dùng root

  2. SQLSTATE [42S22]:Không tìm thấy cột:1054 Cột không xác định 'id' trong 'mệnh đề where' (SQL:chọn * từ `bài hát` trong đó` id` =5 giới hạn 1)

  3. docker mysql trên cổng khác

  4. Các ràng buộc về MySQL và Kiểm tra

  5. Làm thế nào để chuyển đổi mssql script sang mysql