如何将 SQL 查询从 MySQL 8 转换为 MySQL 5.7

Posted

技术标签:

【中文标题】如何将 SQL 查询从 MySQL 8 转换为 MySQL 5.7【英文标题】:How to conver a SQL query from MySQL 8 to MySQL 5.7 【发布时间】:2021-12-29 14:31:54 【问题描述】:

如何将此代码修复到 mysql 5.7?

with recursive u as
(select t.id, t.refferal, t.balance from users t where refferal = 1
union
select t.id, t.refferal, t.balance from u inner join users t
on u.id = t.refferal)
(select u.id,u.refferal,u.balance from u)

Fiddle

【问题讨论】:

一种解决方法是使用 [now obsolete] 变量,但这不是万无一失的。另一种解决方案是编写存储过程。 【参考方案1】:

灵感来自this 答案:

select  id,
        refferal,
        balance
from    (select * from users
         order by refferal, id) u,
        (select @pv := 1) v
where   find_in_set(refferal, @pv)
and     length(@pv := concat(@pv, ',', id))

Fiddle

【讨论】:

感谢您的回答,但是如果 refferal dbfiddle.uk/… @Pisit 它返回与您的其他查询相同的结果! fiddle 你有没有办法在没有这个条件的情况下返回结果? (引用大于或小于 id) @Pisit 也许您正在寻找的(在您的递归查询中)是 where t.id = 10 而不是 where t.refferal = 10 ?由于没有用户 referal = 10...

以上是关于如何将 SQL 查询从 MySQL 8 转换为 MySQL 5.7的主要内容,如果未能解决你的问题,请参考以下文章

如何将查询从 phpMyAdmin SQL Dump 转换为 sql server 易读查询

使用函数 SUM() 和 Group by 将 Mysql 查询转换为 SQL 查询

如何将 MS SQL 查询转换为 MySQL 查询

如何将 MySQL 查询转换为等效的 Oracle sql 查询

将超大规模查询从 SQL Server 转换为 MySQL - JOIN 问题

如何将 MySQL 查询转换为 PHP 代码