Ralat MySQL menggunakan pertanyaan DISTINCT dan ORDER BY
P粉541551230
P粉541551230 2024-03-31 10:27:16
0
1
536

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粉541551230
P粉541551230

membalas semua(1)
P粉536909186
SELECT product_ID, MIN(sortOrder) AS minSortOrder
    FROM product_in_category
    WHERE cat_ID = 9
    GROUP BY product_ID;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan