Rumah > Soal Jawab > teks badan
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粉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;