我的数据库在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);


  结果:


mysql - SQL如何使用公式来填充像Excel一样的列-LMLPHP


  
  现在,创建这样的更新语句,例如:
  


UPDATE demoTable dt
SET dt."Col4" = 'super'
WHERE dt."Col2" = 'grey' AND dt."Col3" = 'car';



  结果


mysql - SQL如何使用公式来填充像Excel一样的列-LMLPHP

关于mysql - SQL如何使用公式来填充像Excel一样的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38480789/

10-11 10:38