首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从子查询中按组丢失的MySQL订单

从子查询中按组丢失的MySQL订单
EN

Stack Overflow用户
提问于 2018-01-25 14:41:09
回答 2查看 1.7K关注 0票数 2

我有一张桌子:

_d_d_

1

2

3

从这个表中,我希望得到特定lang的行和外部if,如果这个lang不存在外部if,我想要与任何其他lang一起的行。

子查询对表进行正确排序,但当我添加组by时,子查询的排序将丢失。这在较早的mysql版本中有效,但在5.7版本中不起作用。

代码语言:javascript
运行
复制
(
 SELECT
  *
 FROM
  x
 ORDER BY FIELD(lang, "fr") DESC, id
)
 as y
group by externalid

我希望查询返回id 2& 3的记录,因此对于每个不同的外部id,如果可能,lang = 'fr',否则任何其他lang。

我该如何解决这个问题?

EN

Stack Overflow用户

发布于 2018-01-25 14:47:22

子查询生成传递给外部查询的结果集(虚拟表)。

除非您在ORDER BY子句中完全指定顺序,否则所有SQL查询都会按照不可预知的顺序生成结果。

不可预知就像随机的,除了更糟。随机意味着每次运行查询时都会得到不同的顺序。不可预测意味着每次你都会得到相同的订单,直到你没有。

MySQL通常在子查询中忽略ORDER BY子句(有几个例外,主要与子查询LIMIT子句相关)。将ORDER BY移动到顶级查询。

编辑.您还误用了MySQL对GROUP BY的臭名昭著的非标准扩展。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48445480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档