当我发送查询时
SELECT id FROM private_messages WHERE to_id=1 AND opened=0
它不返回任何东西
SELECT id FROM private_messages WHERE to_id=1 AND opened<>1
返回 open=0 的所有结果。opened
列类型是具有“1”和“0”(默认)值的枚举。问题是,为什么第一个查询不返回任何内容?
因为opened
是一个枚举,你应该写:
SELECT id FROM private_messages WHERE to_id=1 AND opened='0'
枚举实际上只是一组可能的字符串。从文档中:
An
ENUM
是一个字符串对象,其值选自创建表时列规范中明确枚举的允许值列表。
在 ENUM 字段中,您指定为输入值的字符串会自动编码为数字。在可读查询和输出中,数字被转换回查询结果中的相应字符串。
所以,你必须使用'0'
而不是0
.
当您以这种方式使用查询时SELECT id FROM private_messages WHERE to_id=1 AND opened='0'
,您是在要求 MySQL 返回索引值为 的所有值,to_id=1
而不是字符串值。opened
0