带有枚举值的 MySQL 查询

标签 mysql sql enums reserved-words

我在 MySQL 5.6.19 中有以下结构。

CREATE TABLE `metadata` (
`md5` char(32) NOT NULL,
`match` enum('none','md5','similarity') DEFAULT NULL
) 

我在执行这样的查询时出错:

select * from metadata where match = 'md5';

错误是:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'md5'' at line 1

表和行中有多个条目可以匹配查询。但是 MySQL 拒绝这样做。知道原因吗? 谢谢!

最佳答案

MATCH 是 MySQL 中的保留关键字:http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-5.html .您应该将您的字段名称括在反引号中以使其工作:

select * from metadata where `match` = 'md5';

关于带有枚举值的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567052/

相关文章:

php - 使用 cron 作业作为后台 php

mysql - 显示订单总数以及订单号所售出的产品数量

sql - 选择上一个 x 季度日期

python - 如何在 Python 3.11+ 中创建枚举而不将参数传递给 __init__?

c++ - 带有省略基的 Visual Studio 2010 无范围不透明枚举声明

mysql - 在任何 1 小时的时间间隔内选择计数 > 1 的数据

php - wamp服务器apache phpmyadmin和数据库访问失败

php - Eloquent belongsToMany关系与非标准列名

sql - 通过 .net 访问 UniData

java - 如何返回通用枚举的枚举元素列表?