Mysql 1选择语句2不同的结果
我设置了两个版本的sql—一个在远程机器(mariadb)上,另一个在本地机器(wamp)mysql上。我有一个在本地版本上正确运行的查询,但在远程版本上收到不同的结果。两个数据库中每个表的存储引擎类型相同。但是,db的存储引擎不同——一个是innodb,另一个是myisamMysql 1选择语句2不同的结果,mysql,Mysql,我设置了两个版本的sql—一个在远程机器(mariadb)上,另一个在本地机器(wamp)mysql上。我有一个在本地版本上正确运行的查询,但在远程版本上收到不同的结果。两个数据库中每个表的存储引擎类型相同。但是,db的存储引擎不同——一个是innodb,另一个是myisam SELECT @v:=@v+1 as rank, t.* FROM ( SELECT version.id, CAST((st.up-st.down) as SIGNED) vote
SELECT @v:=@v+1 as rank, t.*
FROM (
SELECT version.id,
CAST((st.up-st.down) as SIGNED) votes,
meta.title
FROM version
JOIN st ON version.id=st.id
JOIN meta ON version.id=meta.id
ORDER BY votes DESC
) t
本地版本-正确的结果
rank | id | votes | title
1 12 100 hello
2 20 50 world
3 5 20 helloworld
远程版本-结果不正确
rank | id | votes | title
1 5 20 helloworld
2 12 100 hello
3 20 50 world
表中的数据被认为是无序的。
FROM
子句中的子查询是一个(派生)表
因此,子查询中的orderby
子句是多余的。MySQL可以自由执行,也可以不执行
结果没有问题。您对查询的假设是错误的。表中的数据被认为是无序的。
FROM
子句中的子查询是一个(派生)表
因此,子查询中的orderby
子句是多余的。MySQL可以自由执行,也可以不执行
结果没有问题。您对查询所做操作的假设是错误的。也许您考虑到了这一点
SELECT version.id
, CAST(st.up-st.down as SIGNED) votes
, meta.title
, @v:=@v+1 rank
FROM version
JOIN st
ON version.id = st.id
JOIN meta ON version.id = meta.id
JOIN (SELECT @v:=1) vars
ORDER
BY votes DESC
也许你在想这个
SELECT version.id
, CAST(st.up-st.down as SIGNED) votes
, meta.title
, @v:=@v+1 rank
FROM version
JOIN st
ON version.id = st.id
JOIN meta ON version.id = meta.id
JOIN (SELECT @v:=1) vars
ORDER
BY votes DESC
您好,如果您还想保留子查询,请尝试 `
`您好,如果您还想保留子查询,请重试 `
`当您只运行内部查询时会发生什么?当您只运行内部查询时会发生什么?您好,非常感谢,但是在我的mysql的任何一个版本中都不起作用-给我错误的结果我非常感谢,但是在我的mysql的任何一个版本中都不起作用-给我错误的结果我非常感谢,但是不起作用我的mariadb的远程版本-给了我不正确的结果我非常感谢,但是在我的mariadb的远程版本中不起作用-给了我不正确的结果