我正在加载大量数据来创建提要。在此过程中,必须有一个左联接来添加其他数据。因此,您了解对性能有很高的要求。

不需要通过主ID进行排序-因此是不必要的,但是需要的是对左连接零件进行排序。

考虑以下示例:

SELECT p.*, atts.name
FROM products as p
LEFT JOIN attributes as atts ON p.product_id = atts.product_id


现在我需要添加类似

ORDER BY ??DEFAULT_PRODUCT_ORDER??, atts.position ASC


我试图搜索此问题,但我发现最接近的事物以group by / max answers结尾。

使用:MySQL / MariaDB

编辑:我还考虑过通过子查询对SQL中的属性进行预处理,该查询将对它们进行排序并将它们连接为1列-但这不会很有效吗?

最佳答案

不知道您到底要寻找什么,您可以尝试一些方法

SELECT p.*, group_concat(atts.name)
FROM products as p
LEFT JOIN attributes as atts ON p.product_id = atts.product_id

Group BY /*all columns not included in aggregate (noc necc for mysql but other dbs like mssql get crazy about that*/

关于mysql - SQL保留默认顺序,但对左联接应用子顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41575497/

10-12 02:54