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

Các kết quả khác nhau trong sqlfiddle.com 5.5.30 và MariaDB 5.5.31

Tôi sợ rằng tôi không có MariaDB trong tay, nhưng bạn có thể thử cách sau chỉ để xem cách các biến người dùng được xuất:-

SELECT  *
FROM test_golf_player p
LEFT JOIN 
(
    SELECT pid, leaguepoints, @Sequence:=IF(@PrevPid = pid, @Sequence + 1, 0) AS aSequence, @PrevPid := pid
    FROM
    (
        SELECT pid, leaguepoints
        FROM test_golf_card 
        ORDER BY pid, leaguepoints DESC
    ) Sub1
    CROSS JOIN (SELECT @PrevPid := 0, @Sequence := 0) Sub2
) gC
ON p.pid = gC.pid 
ORDER BY p.name DESC 

CHỈNH SỬA - Thực hiện một chút điều tra khi xem kết quả của bạn, có vẻ như MariaDB đã bỏ qua ORDER BY trong truy vấn phụ. Do đó, số thứ tự theo thứ tự ngẫu nhiên và cũng được đặt lại khi pid thay đổi (nó thực hiện ngẫu nhiên do thứ tự không được cố định). Một chút của google và có vẻ như đây là một tính năng có chủ ý của MariaDB. Tiêu chuẩn SQL định nghĩa một bảng là một tập hợp các hàng không có thứ tự và một lựa chọn phụ được coi là một bảng do đó thứ tự theo bị bỏ qua - https://kb.askmonty.org/en/why-is-order-by-in-a-from-subquery -ignored / .

Đó là một chút thiệt thòi. Không chắc là có công việc xung quanh vì tôi không thể nghĩ ra vào lúc này. Đối với vấn đề ban đầu mà vấn đề này phải giải quyết, tôi nghĩ rằng cần phải sử dụng các lựa chọn phụ tương quan có thể sẽ không hiệu quả.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để hủy tất cả các quy trình trong danh sách quy trình hiển thị Mysql?

  2. Phân tích cú pháp chuỗi thành ngày mysql

  3. Tìm mức lương tối đa và tối đa thứ hai cho bảng nhân viên MySQL

  4. Quốc gia và trạng thái thả xuống động Laravel

  5. Chiến lược đặt tên ngủ đông thay đổi tên bảng