[英]add column to table and fill it under condition -mySQL
我有一张简单的酒店表格,上面有房间类型和夜间价格。 我需要在此表中添加一个名为“ cheap/expensive
”的列并填写条件:如果房价< 100,则填写“便宜”,否则填写“昂贵”。 我该怎么做?
我开始:
ALTER TABLE rooms
ADD `cheap/expensive` CHAR NOT NULL;
我会把它命名为cheap
或expensive
,而不是cheap/expensive
。 它的值应该是(如果列名很expensive
):1 - 昂贵,0 - 便宜。 使用 integer 值,它更快,占用更少的存储空间。
ALTER TABLE rooms
ADD `expensive` INT(1) NOT NULL DEFAULT 0;
然后你应该在每次插入表格之前使用你使用的正确语言,Java,PHP,Python 等有条件。
其他方法是使用TRIGGERS
,但如果您使用后端语言来验证您的数据,我不会推荐该解决方案。
插入新行时此列的示例触发器:
CREATE TRIGGER expensivecheck BEFORE INSERT ON rooms FOR EACH ROW IF NEW.price >= 100 THEN SET NEW.expensive = 1; END IF;
由于这是派生的主观信息,因此您更有可能在代码或查询中执行某些操作,而不是直接作为数据库中的数据。 例如,如果您稍后更新价格,您必须了解是否更新它是便宜还是昂贵。 或者,如果您后来决定更改分界线(例如更改为 110 美元或作为平均家庭收入的 function),或者您需要更细粒度的价格类别(例如便宜|中等|昂贵),更改您的算法而不是更改您的数据。
示例查询:
SELECT *, IF (price < 100, "Cheap", "Expensive") as price_category FROM room;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.