1

当我发送查询时

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”(默认)值的枚举。问题是,为什么第一个查询不返回任何内容?

4

2 回答 2

6

因为opened是一个枚举,你应该写:

SELECT id FROM private_messages WHERE to_id=1 AND opened='0'

枚举实际上只是一组可能的字符串。从文档中

AnENUM是一个字符串对象,其值选自创建表时列规范中明确枚举的允许值列表。

于 2012-06-04T19:21:59.553 回答
0

在 ENUM 字段中,您指定为输入值的字符串会自动编码为数字。在可读查询和输出中,数字被转换回查询结果中的相应字符串。

所以,你必须使用'0'而不是0.

当您以这种方式使用查询时SELECT id FROM private_messages WHERE to_id=1 AND opened='0',您是在要求 MySQL 返回索引值为 的所有值,to_id=1而不是字符串值。opened0

于 2012-06-04T19:29:26.357 回答