gpt4 book ai didi

mysql - MySQL 与 SQL Server 的排序问题

转载 作者:行者123 更新时间:2023-11-29 14:04:23 24 4
gpt4 key购买 nike

我在 SQL Server 中有一个像这样的 SQL 查询

SELECT 
CASE WHEN ROW_NUMBER() OVER(PARTITION BY _no ORDER BY _no asc) = 1 THEN
_no ELSE '' END
as row_no,
_no,
_name,
r._names
FROM
(
SELECT '1' as _no, 'vikas' as _name UNION ALL
SELECT '1', 'kratika' UNION ALL
SELECT '2', 'vikas' UNION ALL
SELECT '1', 'kratika kastwar'
) t
INNER JOIN
(
SELECT '1' as _nos, 'One' as _names UNION ALL
SELECT '2', 'two'
) r
ON r._nos = t._no
ORDER BY _no

输出:

row_no _no  _name           _names
------ ---- --------------- ------
1 1 kratika One
1 kratika kastwar One
1 vikas One
2 2 vikas two

和我在 MySQL 中做的一样

SELECT 
CASE WHEN _no = @i THEN '' ELSE @i := _no END
as row_no,
_no,
_name,
r._names
FROM
(
SELECT '1' as _no, 'vikas' as _name UNION ALL
SELECT '1', 'kratika' UNION ALL
SELECT '2', 'vikas' UNION ALL
SELECT '1', 'kratika kastwar'
) t
INNER JOIN
(
SELECT '1' as _nos, 'One' as _names UNION ALL
SELECT '2', 'two'
) r
ON r._nos = t._no
,
(SELECT @i := '') temp
ORDER BY _no

输出:

1   1   vikas           One
1 kratika One
1 1 kratika kastwar One
2 2 vikas two

但我期待 MySQL 中的输出像这样

1      1    kratika         One
1 kratika kastwar One
1 vikas One
2 2 vikas two

我不想在 MySQL 中使用这样的查询,如此处的描述 MYSQL Order By W/Count

SELECT 
CASE WHEN _no = @i THEN '' ELSE @i := _no END
as row_no,
_no,
_name,
_names
FROM
(SELECT
*
FROM
(
SELECT '1' as _no, 'vikas' as _name UNION ALL
SELECT '1', 'kratika' UNION ALL
SELECT '2', 'vikas' UNION ALL
SELECT '1', 'kratika kastwar'
) t
INNER JOIN
(
SELECT '1' as _nos, 'One' as _names UNION ALL
SELECT '2', 'two'
) r
ON r._nos = t._no
,
(SELECT @i := '') temp
ORDER BY _no) t

如何在 MySQL 中实现相同的效果,查询性能是主要参数

最佳答案

我认为这里发生的事情是MySQL正在构建结果集,然后通过一个额外的步骤根据ORDER BY子句对其进行排序。由于 'kratika kastwar' 行位于 _no2 的行之后,因此您会得到意外的输出。

我想,解决方案是将基本的 SELECT (没有特殊的用户变量恶作剧)放在 FROM 子句的子查询中,应用 ORDER BY 子查询的子句。然后在外部查询中执行用户变量工作。这样订购就已经发生了。

编辑:我看到你说你不想这样做。我认为你别无选择,除非你能找到一种方法,通过对计算结果执行文件排序步骤(不太可能),让 MySQL 不执行 ORDER BY 操作。

关于mysql - MySQL 与 SQL Server 的排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com