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

Apakah mengelompokkan tabel yang dipesan selalu mengembalikan baris pertama? MySQL

Tidak, ini bukan pendekatan yang benar.

Saya yakin Anda sedang membicarakan pertanyaan seperti ini:

SELECT  product.*, MIN(qty)
FROM    product
GROUP BY
        type
ORDER BY
        qty

Apa yang Anda lakukan di sini menggunakan MySQL ekstensi yang memungkinkan Anda memilih kolom yang tidak teragregasi/tidak dikelompokkan dalam GROUP BY kueri.

Ini sebagian besar digunakan dalam kueri yang berisi JOIN dan GROUP BY pada PRIMARY KEY , seperti ini:

SELECT  order.id, order.customer, SUM(price)
FROM    order
JOIN    orderline
ON      orderline.order_id = order.id
GROUP BY
        order.id

Di sini, order.customer tidak dikelompokkan atau digabungkan, tetapi karena Anda mengelompokkan di order.id , dijamin memiliki nilai yang sama dalam setiap grup.

Dalam kasus Anda, semua nilai qty memiliki nilai yang berbeda dalam grup.

Tidak dijamin dari catatan mana dalam grup mesin akan mengambil nilainya.

Anda harus melakukan ini:

SELECT  p.*
FROM    (
        SELECT  DISTINCT type
        FROM    product p
        ) pd
JOIN    p
ON      p.id = 
        (
        SELECT  pi.id
        FROM    product pi
        WHERE   pi.type = pd.type
        ORDER BY
                type, qty, id
        LIMIT 1
        )

Jika Anda membuat indeks pada product (type, qty, id) , kueri ini akan bekerja dengan cepat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat tampilan di MySQL?

  2. Lebih dari dan Kurang dari kueri MySql gagal dengan bidang desimal

  3. Bagaimana memulai server MySQL di windows xp

  4. Pilih item X dari setiap jenis

  5. Pencarian Antara Tanggal di Query tidak menunjukkan Hasil yang benar