【发布时间】:2019-05-14 10:25:40
【问题描述】:
我想要控制在网站上同时隐藏一些产品。我认为在数据库上进行更改比更改 sql 并再次加载页面更容易。
我通过以下方式添加了一个新列:
ALTER TABLE product ADD hide BINARY NULL;
它创建了一个 TINYINT(1) 列。如果我将某些产品设为 1 以隐藏,然后将其中一些产品设为 0 以再次显示,我将有一个带有隐藏列的表格,例如:
*hide*
NULL
0
1
当我查询时:
SELECT * FROM product WHERE hide <> 1;
它只显示 0,但不显示 NULL。 当我把列改成BIT时,它变成了BIT(1),同样的查询结果是一样的。
从逻辑上讲,如果某事物被定义为 0 或 1,则没有其他选择。这就是你使用二进制的原因。第三种选择不合逻辑。
为了符合定义,只有这样写吗?
SELECT * FROM product WHERE hide <> 1 OR hide IS NULL;
(使用 MySQL 5.6.17)
问题 2:如何暂时隐藏产品?以不同的方式?
【问题讨论】:
标签: mysql null binary where-clause tinyint