5

我将现有脚本中的一列拉到我的模板文件中,一切都很好。

唯一的问题是,这个脚本有一个名为 的列order,然后每一行在该列中都有一个数字来显示哪个应该在顶部等。如果我将查询设置为“ ORDER BY name”例如,一切正常,但是当我使用“ ORDER BY order”,然后我得到一个 SQL 错误。
我可以没有一个名为 的专栏order吗?我无法更改列名,因为它是脚本的一部分。

有办法解决吗?

这是我的 SQL 查询中的行:

SELECT * FROM categories WHERE hide = 0 ORDER BY order 
4

7 回答 7

10

order是 SQL 中的关键字。因此,如果您希望使用关键字作为名称,请在其周围使用反引号字符:

SELECT * FROM categories WHERE hide = 0 ORDER BY `order`

试试看:)

于 2012-10-08T19:28:41.910 回答
2

如果您使用 Postgres,只需使用“column_name”,例如:

SELECT "order" FROM table_name WHERE "order" > 10 ORDER BY "order";
于 2018-06-07T12:21:36.197 回答
0

尝试使用反引号:

SELECT * FROM `categories` WHERE `hide` = 0 ORDER BY `order`

ORDER 是 SQL 中的保留字。您可以使用保留字作为列名,但在引用它时必须将其括在反引号中。将所有列名括在反引号中是一种很好的做法,这样您就不会遇到此问题。

于 2012-10-08T19:28:27.433 回答
0

尝试在列名周围使用反引号,应该可以。

于 2012-10-08T19:28:50.087 回答
0

手册

如果引用保留字,则可以将其用作标识符。

所以你可以像这样使用它:

SELECT * FROM categories WHERE hide = 0 ORDER BY `order`
于 2012-10-08T19:29:44.080 回答
0

ASorder是一个 SQL 关键字,您应该使用反引号将其作为字段标识符正确转义:

SELECT ... FROM ... ORDER by `order`
于 2012-10-08T19:31:08.567 回答
0

用括号为我工作。按 [T].[ORDER] 的顺序从 dbo.test 中选择 T.*

于 2016-07-29T14:32:53.463 回答