我有一张简单的酒店桌子,其中列出了房间的类型和价格。
我需要在此表中添加一个名为cheap/expensive
的列,并在其中填充条件:
如果房价<100,则填写“便宜”
否则填写“昂贵”。
我该怎么办?
我从开始:
ALTER TABLE rooms
ADD `cheap/expensive` CHAR NOT NULL;
答案 0 :(得分:1)
我将其命名为 template<class charT, class traits, class Allocator>
constexpr bool
operator==(const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
或cheap
,而不是expensive
。并且其值应该是(如果列名是cheap/expensive
):1-表示昂贵,0-表示便宜。使用整数值,速度更快,并且占用的存储空间更少。
expensive
然后,在使用适当的语言(例如Java,PHP,Python等)每次插入表之前,您都应具备条件。
其他方法是使用ALTER TABLE rooms
ADD `expensive` INT(1) NOT NULL DEFAULT 0;
,但是如果您使用后端语言来验证数据,我不建议使用该解决方案。
插入新行时此列的示例触发器:
TRIGGERS
答案 1 :(得分:0)
由于这是派生的主观信息,因此与直接作为数据库中的数据相比,您更有可能在代码或查询中执行某些操作。例如,如果您以后更新价格,则必须知道是否要更新价格便宜还是昂贵。或者,如果您以后决定更改分界线(例如,更改为$ 110或作为家庭平均收入的函数),或者您需要更多细粒度的价格类别(例如,“便宜” |“中度” |“昂贵”),则更改您的帐户更容易,更安全算法,而不是更改数据。
查询示例:
SELECT *, IF (price < 100, "Cheap", "Expensive") as price_category FROM room;