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