我想要控制在网站上同时隐藏一些产品。我认为在数据库上进行更改比更改 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:您如何暂时隐藏产品?以不同的方式?