选择具有关键字名称的列

时间:2012-09-13 06:38:01

标签: mysql

我有一个名为'test'的表

它包含一个名为“AND”

的列

为此,我使用以下查询

insert into test values ('a','abc');
insert into test values ('b','def');

现在我想从'test'表中选择我的'AND'列

查询select AND from test;无效,因为AND是关键字

我试过

select "AND" from test;
select 'AND' from test;

两个查询都会返回错误的结果,如下所示

enter image description here

如何选择“AND”栏?

6 个答案:

答案 0 :(得分:22)

使用backtick代替转义关键字。就像你创建表格一样。使用双引号或单引号会将其解析为string,这就是为什么你得到两条and

的记录
select `AND` from test;

答案 1 :(得分:3)

  1. 请勿创建名称为关键字的列。

  2. 如果您确实创建了具有此类名称的列,请使用反引号(仅限MySQL)或双引号(SQL标准)来包含该名称。我不确定你是否需要打开一些机制让双引号在MySQL中运行。这会创建一个“分隔标识符”。

    SELECT `AND` AS a, "AND" AS b
      FROM test;
    
  3. 另见:

答案 2 :(得分:1)

如果要将保留字用作列,则必须使用保留字列的反引号.....

在你的情况下,你必须这样做:

select `AND' from test;

答案 3 :(得分:1)

这是一个很老的问题并得到了解决。 Read here more

但你仍然可以试试这个:

select your_tablename.column_name from table_name;

您的代码: -

select test.AND from test;

答案 4 :(得分:0)

如果使用“”使用select语句,则选择给定的sting 所以你必须给出一个像列的名字 在mssql中你必须使用

select [AND] from test;

或在mysql语法中从test中选择AND;

答案 5 :(得分:0)

从你的问题:

CREATE TABLE `test` (
    `count` VARCHAR(50) NULL DEFAULT NULL,
    `AND` VARCHAR(50) NULL DEFAULT NULL
----^---^ Why do you use `backtick` (`) in CREATE TABLE statement?
)

您需要在backtick语句中使用SELECT

SELECT `AND` FROM test;
-------^---^-----------

请参阅MySQL: Reserved Words