10

我有一个名为“测试”的表

它包含一个名为“AND”的列

为此,我使用以下查询

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

现在我想从“测试”表中选择我的“与”列

查询将select AND from test;不起作用,因为 AND 是关键字

我试过了

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

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

在此处输入图像描述

如何选择我的“AND”列?

4

6 回答 6

27

用于backtick转义关键字。就像您创建表格的方式一样。使用双引号或单引号会将其解析为string这就是您获得两条记录的原因and

select `AND` from test;
于 2012-09-13T06:39:02.693 回答
5
  1. 不要创建名称为关键字的列。

  2. 如果您确实使用这样的名称创建列,请使用反引号(仅限 MySQL)或双引号(SQL 标准)将名称括起来。我不确定您是否需要打开某种机制才能在 MySQL 中使用双引号。这将创建一个“分隔标识符”。

    SELECT `AND` AS a, "AND" AS b
      FROM test;
    

也可以看看:

于 2012-09-13T06:45:19.597 回答
2

这是一个很老的问题并解决了。在这里阅读更多

但你仍然可以试试这个:

select your_tablename.column_name from table_name;

你的代码: -

select test.AND from test;
于 2012-09-13T07:07:03.387 回答
1

如果要使用保留字作为列,则必须在保留字列周围使用反引号......

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

select `AND' from test;
于 2012-09-13T06:44:51.860 回答
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?
)

您需要backtickSELECT语句中使用相同的方式。

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

请参阅MySQL:保留字

于 2012-09-13T06:49:53.727 回答
0

如果你使用 select setement using "" 它会选择一个给定的字符串,所以你必须像在 mssql 中一样给出一个列名,你必须使用

select [AND] from test;

或在 mysql syntex 中AND从测试中选择;

于 2012-09-13T06:40:26.040 回答