簡體   English   中英

將列添加到表並在 -mySQL 條件下填充

[英]add column to table and fill it under condition -mySQL

我有一張簡單的酒店表格,上面有房間類型和夜間價格。 我需要在此表中添加一個名為“ cheap/expensive ”的列並填寫條件:如果房價< 100,則填寫“便宜”,否則填寫“昂貴”。 我該怎么做?

我開始:

ALTER TABLE rooms 
ADD `cheap/expensive` CHAR NOT NULL;

我會把它命名為cheapexpensive ,而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM