mysql - SQL 保留默认顺序但对左连接应用子顺序

标签 mysql sql join sql-order-by mariadb

我正在加载大量数据来创建提要。在此过程中必须有一个左连接来添加额外的数据。所以您知道对性能的要求很高。

不需要按主 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 答案结尾...

使用: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/

相关文章:

c# - 需要帮助提高 SQL DELETE 性能

php - 外部服务器上的关系表上的 Laravel where() 和 orderBy()

mysql - 从 A 组中选择缺少值的 B 组数据

php - 多对多数据库架构

php - 为什么我的数据被插入两次? PHP/MySQL

php - 从一个查询中选择两次 MySQL - PHP

php - 使用两个连接加入 laravel

mysql - 奇怪的 SQL 代码 : Why do they use a subquery instead of join?

MySql查询: Getting a record count within query

mysql - 将十六进制/二进制数据导入mysql