Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何指定在MySql中有空格的列名(在where子句中)_Mysql - Fatal编程技术网

如何指定在MySql中有空格的列名(在where子句中)

如何指定在MySql中有空格的列名(在where子句中),mysql,Mysql,我有下表 ID First Name Last Name 1 Ruby Rails 2 Loop Western 列中有一个空格,所以当我编写一个类似 $sql=“从[姓氏]=“西方”的人中选择* 它抛出了错误 错误,无法列出表MySQL错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“[姓氏]=”Western”附近使用的正确语法 如何使其工作?如果这是有效的,则必须使用反勾号: `Last Name

我有下表

ID  First Name  Last Name
1   Ruby            Rails 
2   Loop            Western
列中有一个空格,所以当我编写一个类似

$sql=“从[姓氏]=“西方”的人中选择*

它抛出了错误

错误,无法列出表MySQL错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“[姓氏]=”Western”附近使用的正确语法


如何使其工作?

如果这是有效的,则必须使用反勾号:

`Last Name` 

但是如果你问我,不要这样做。它在沿途的某个地方乞求麻烦。只需使用下划线或大小写:
LastName

您可以在列名周围使用反勾号:

SELECT * FROM Persons WHERE `Last Name` = 'Western'
注意,这不是标准的SQL;Microsoft的表示法也没有在名称周围使用方括号。SQL标准使用“分隔标识符”,并用双引号括起来:

SELECT * FROM Persons WHERE "Last Name" = 'Western'
使用

从[姓氏]=“西部”的人员中选择*

如果您使用双引号将整个命令包装为字符串以将其传递给某个函数,则可作为备用

例如熊猫:


pd.read_sql(“SELECT*FROM Persons,其中[Last Name]=“Western'”,con)

这假设OP对模式有任何控制权,但是。。。同意+1如果它不是标准的,为什么你建议他使用它而不是“”呢?我很困惑,最好用“”或“”或``?