我的MySQL查询存在问题。我有一个表,其中一列是“read”,默认值为“1”,由phpmyadmin而不是bool自动设置为tinyint(1)。
当我执行查询时:
SELECT * FROM book WHERE read = '1'
它出错了。
但是当我执行此查询时:
SELECT * FROM book WHERE id = '77'
很好。我没有看到任何问题,除非可能无法以这种方式搜索tinyint。有人可以帮忙吗?我走过谷歌但没有找到答案。
答案 0 :(得分:4)
READ
是保留字。它必须用反引号逃脱,
SELECT * FROM book WHERE `read` = 1
更新1
另一种选择是提供ALIAS
,例如
SELECT * FROM book a WHERE a.read = 1
答案 1 :(得分:4)
您不能直接使用MySQL Reserved Words作为列名。 READ 是MySQL保留字,如果您仍然希望使用 READ 作为列名而不是在列之前和之后使用`(反引号)符号名称。
SELECT * FROM book WHERE `read` = 1;
答案 2 :(得分:2)
只需删除引号
即可因为它很小,你不应该使用引号(将它们用于字符串,字符或日期)
select * from `table_name` where `read`=1;
如果它不起作用那么你可以像Ilion所说的那样进行施法(很好)