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

Hasil berbeda di sqlfiddle.com 5.5.30 dan MariaDB 5.5.31

Takut saya tidak memiliki MariaDB, tetapi bisakah Anda mencoba yang berikut ini hanya untuk melihat bagaimana variabel pengguna ditampilkan:-

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 

EDIT - Melakukan sedikit penyelidikan melihat hasil Anda, tampaknya MariaDB telah mengabaikan ORDER BY di sub kueri. Oleh karena itu nomor urut dalam urutan acak, dan juga diatur ulang ketika pid berubah (yang dilakukannya secara acak karena urutannya tidak diperbaiki). Sedikit google dan sepertinya ini adalah fitur yang disengaja dari MariaDB. Standar SQL mendefinisikan tabel sebagai kumpulan baris yang tidak berurutan, dan sub-pilihan diperlakukan sebagai tabel sehingga urutannya diabaikan - https://kb.askmonty.org/en/why-is-order-by-in-a-from-subquery -diabaikan/ .

Ini adalah sedikit kerugian. Tidak yakin ada pekerjaan di sekitar karena saya tidak bisa memikirkannya saat ini. Untuk masalah awal yang harus dihadapi, saya pikir perlu menggunakan sub-pilihan yang berkorelasi yang mungkin tidak akan efisien.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tanggal Php/Mysql disimpan sebagai '0000-00-00'

  2. Bagaimana cara menghubungkan MySQL dengan Java?

  3. Koneksi Laravel MySql DB dengan SSH

  4. Bagaimana cara menghapus spasi antar baris di Textarea?

  5. Arsitek untuk Keamanan:Panduan untuk MySQL