同一条 sql:
select b from( select n.id as a, n.name as b from tableX n order by a, b ) t;
在 mysql 里是能跑通的,使用 jdbc 的 statement 也能跑通,但使用 preparedStatement 就报错了:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'a' in 'order clause'
这合理嘛,我要执行这种 sql 只能使用 statement 吗?
1
liprais 2022-01-25 14:33:01 +08:00
在 subquery 里面排序有啥意义.....
|
3
yuztoex 2022-01-25 15:07:28 +08:00
我记得这个本来就不支持啊,你可以换个客户端试试看
order by 不支持本次查询新设的 alas |
4
xuanxiao OP @yuztoex mysql 命令行和 workbench 都是支持的,只有 jdbc 的 preparedStatement 报错
|
5
sagaxu 2022-01-25 15:15:40 +08:00 via Android
把 jdbc 的 strict_mode 关掉
|
7
seanzxx 2022-01-29 13:47:22 +08:00
要不是好奇去试一下,我就信你了。
我在本地无法重现你的问题! MariaDB 10 MySQL Connector 8.0.28 Java 17 Table: create table tableX(id int, name varchar(200)); insert into `tableX` values(1, 'test1'); insert into `tableX` values(2, 'test2'); insert into `tableX` values(3, 'test3'); Code: Connection connection = DriverManager.getConnection("jdbc:mysql://test:test@localhost/test"); PreparedStatement preparedStatement = connection.prepareStatement("select b from( select n.id as a, n.name as b from tableX n order by a, b ) t;"); ResultSet resultSet = preparedStatement.executeQuery(); while(resultSet.next()) { System.out.println(resultSet.getString("b")); } Output: test1 test2 test3 |