[英]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.