使用DISTINCT查询和ORDER BY导致mySQL错误
P粉541551230
P粉541551230 2024-03-31 10:27:16
0
1
507

我正在尝试对一列执行 DISTICNT 查询,并按不在 SELECT 语句中的另一列进行排序。我收到此错误:

查询失败 SQLSTATE[HY000]:一般错误:3065 表达式 #1 ORDER BY 子句不在 SELECT 列表、引用列中 'midnites_midNite.product_in_category.sortOrder' 不在 选择列表;这与 DISTINCT 不兼容

我有一个 products_in_category 示例表,有四列:ID、cat_ID、product_ID 和 sortOrder。我一直在尝试对 Product_ID WHERE cat_ID = 9 执行 DISTICNT 查询,并按 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

此查询返回 3 个值 5、26、7,这是正确的,但我还需要按其关联的 sortOrder 值进行排序。如果我使用下面的这个查询,它会返回 5 个值,这是不正确的,因为 sortOrder 列中的所有值都是唯一的。

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

如果我使用下面的查询,mySQL 会抛出此错误,我明白为什么,sortOrder 未包含在 SELECT 语句中。我不确定如何对 Product_ID 列执行 DISTICNT 查询并按返回值的关联 sortOrder 值进行排序。

查询失败 SQLSTATE[HY000]:一般错误:3065 表达式 #1 ORDER BY 子句不在 SELECT 列表、引用列中 'midnites_midNite.product_in_category.sortOrder' 不在 选择列表;这与 DISTINCT 不兼容

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

我以各种方式尝试了各种 union、join 和 select 语句。我希望这是能够理解的,并感谢您提供的任何帮助!!!

P粉541551230
P粉541551230

全部回复(1)
P粉536909186

雷雷

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板