我的数据库在MySQL中
我有一张桌子,比方说4列。
我想知道是否有可能,以及如何实现以下内容:根据第2列和第3列的值填充第4列
在Excel中,我有一个公式,举一个例子:如果column2值设置为“灰色”,而column3值设置为“ car”,则列4值应设置为“ super”
我仅以此为例。
我在Excel中的真实公式如下:= IF(K4=4;"Maximal";IF(K4>4;"Maximal";IF(K4=3;"Important";IF(K4>3;"Important";IF(K4=2;"Limited";IF(K4>2;"Limited";IF(K4=1;"Forgettable";IF(K4>1;"Forgettable";"error"))))))))
但是我想用SQL做。
我一直想创建表,直到第3列,将第4列设置为NULL或为空,然后打开用Java编写的GUI,也许在那里有一段代码可以根据第2列和第2列中的内容自动填充第4列3(可以通过Choicelist选择这些值)。
但是,如果有一种方法可以直接在SQL中执行,我很感兴趣
非常感谢您的帮助。
问候
最佳答案
是。您可以使用Update语句根据特定行其他列中其他值的某些要求轻松地更新NULL值
UPDATE <tablename>
SET <column> = 'value'
WHERE <condition>
这里唯一的缺点可能是您必须为column2和column3中的每个值组合创建一个update语句。 (但是,对于您的条件数量而言,工作量并不大)。
我创建了一个示例(演示):
根据您的示例在SQL中创建表可能看起来像这样,为了示例,我使用了一个临时表:
CREATE GLOBAL TEMPORARY TABLE demoTable (
"Col1" VARCHAR2(50 BYTE) NOT NULL,
"Col2" VARCHAR2(50 BYTE) NOT NULL,
"Col3" VARCHAR2(50 BYTE) NOT NULL,
"Col4" VARCHAR2(50 BYTE) DEFAULT NULL
)
ON COMMIT PRESERVE ROWS
我还插入了一些虚拟数据:
INSERT INTO demoTable VALUES ('Charles', 'grey', 'car', NULL); INSERT INTO demoTable VALUES ('Alice', 'grey', 'bike', NULL); INSERT INTO demoTable VALUES ('Bob', 'red', 'car', NULL);
结果:
现在,创建这样的更新语句,例如:
UPDATE demoTable dt
SET dt."Col4" = 'super'
WHERE dt."Col2" = 'grey' AND dt."Col3" = 'car';
结果
关于mysql - SQL如何使用公式来填充像Excel一样的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38480789/