cari

Rumah  >  Soal Jawab  >  teks badan

Ralat MySQL menggunakan pertanyaan DISTINCT dan ORDER BY

Saya cuba melakukan pertanyaan DISTICNT pada satu lajur dan mengisih mengikut lajur lain yang tiada dalam pernyataan SELECT. Saya mendapat ralat ini:

Pertanyaan gagal SQLSTATE[HY000]: Ralat umum: 3065 Ungkapan #1 ORDER BY klausa tiada dalam senarai PILIH, lajur yang dirujuk 'midnites_midNite.product_in_category.sortOrder' tiada Pilih senarai; ini tidak serasi dengan DISTINCT

Saya mempunyai jadual contoh products_in_category dengan empat lajur: ID, cat_ID, product_ID dan sortOrder. Saya telah cuba melakukan Product_ID WHERE cat_ID = 9 DISTICNT pertanyaan dan mengisih mengikut nilai pertanyaan yang berkaitan dalam lajur sortOrder.

ID      cat_ID  product_ID  sortOrder
+----------+--------+-----------+--------+
|    1     |    9   |     5     |    3   |
+----------+--------+-----------+--------+
|    2     |    9   |     26    |    1   |
+----------+--------+-----------+--------+
|    3     |    9   |     5     |    2   |
+----------+--------+-----------+--------+
|    4     |    9   |     7     |    4   |
+----------+--------+-----------+--------+
|    5     |    9   |     5     |    5   |
+----------+--------+-----------+--------+
|    6     |   22   |     4     |    6   |
+----------+--------+-----------+--------+

SELECT DISTINCT product_ID 
FROM product_in_category 
WHERE cat_ID = 9

Pertanyaan ini mengembalikan 3 nilai 5, 26, 7, yang betul, tetapi saya juga perlu mengisih mengikut nilai Susun Isih yang berkaitan. Jika saya menggunakan pertanyaan ini di bawah, ia mengembalikan 5 nilai, yang tidak betul kerana semua nilai dalam lajur Susun Isih adalah unik.

SELECT DISTINCT product_ID, 
                sortOrder 
FROM product_in_category 
WHERE cat_ID = 9 
ORDER BY sortOrder

Jika saya menggunakan pertanyaan di bawah, mySQL membuang ralat ini dan saya faham mengapa, sortOrder tidak disertakan dalam pernyataan SELECT. Saya tidak pasti cara melaksanakan pertanyaan DISTICNT pada lajur Product_ID dan mengisih mengikut nilai Susunan Isih yang berkaitan bagi nilai yang dikembalikan.

Pertanyaan gagal SQLSTATE[HY000]: Ralat umum: 3065 Ungkapan #1 ORDER BY klausa tiada dalam senarai PILIH, lajur yang dirujuk 'midnites_midNite.product_in_category.sortOrder' tiada Pilih senarai; ini tidak serasi dengan DISTINCT

SELECT DISTINCT product_ID 
FROM product_in_category 
WHERE cat_ID = 9
ORDER BY sortOrder

Saya mencuba pelbagai kesatuan, menyertai dan memilih penyata dalam pelbagai cara. Saya harap ini boleh difahami dan menghargai sebarang bantuan yang anda boleh berikan! ! !

P粉541551230P粉541551230268 hari yang lalu551

membalas semua(1)saya akan balas

  • P粉536909186

    P粉5369091862024-04-01 09:29:51

    SELECT product_ID, MIN(sortOrder) AS minSortOrder
        FROM product_in_category
        WHERE cat_ID = 9
        GROUP BY product_ID;

    balas
    0
  • Batalbalas