SQL查询:无法通过名为“order”的列进行排序?

时间:2012-10-08 19:26:24

标签: php sql sql-order-by

我将现有脚本中的一列拖到我的模板文件中,一切都运行良好。

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

有办法吗?

这是我的SQL查询中的一行:

order

7 个答案:

答案 0 :(得分:5)

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

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

试试:)

答案 1 :(得分:0)

尝试使用反引号:

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

ORDER是SQL中的保留字。您可以使用保留字作为列名,但在引用时必须将其包围在反引号中。最好在反引号中包围所有列名,这样就不会遇到这个问题。

答案 2 :(得分:0)

尝试在列名称周围使用后退标记,应该这样做。

答案 3 :(得分:0)

来自manual

  

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

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

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

答案 4 :(得分:0)

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

SELECT ... FROM ... ORDER by `order`

答案 5 :(得分:0)

用括号为我工作。 SELECT T. * FROM dbo.test AS T ORDER BY [T]。[ORDER]

答案 6 :(得分:0)

如果您正在使用Postgres,请使用" column_name",例如:

SELECT "order" FROM table_name WHERE "order" > 10 ORDER BY "order";