我正在尝试对一列执行 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 语句。我希望这是能够理解的,并感谢您提供的任何帮助!!!
雷雷