MySQL IF (SELECT) 为了改变列值
MySQL IF (SELECT) in order to change a Column value
我首先创建一个 table,其中有 6 个 headers/columns,然后我在其中添加一列并为该新列设置默认值。我要修改的部分是我设置的新列。我有一些默认值会更改的地方 - 基于纯粹来自我导入的数据的不同列。
我的代码如下:
SET GLOBAL local_infile=1;
CREATE TABLE audio(
File_Name CHAR(4) PRIMARY KEY,
File_Subdirectory CHAR(50),
....,
....,
....,
....,
);
-- Created table with the headers described above (left out 4 column names)
LOAD DATA LOCAL INFILE 'audio.csv'
INTO TABLE audio
FIELDS TERMINATED BY ',';
-- Loaded data into the right columns, even when I check with SELECT * FROM audio looks good
ALTER TABLE audio ADD COLUMN Microphone VARCHAR(15) DEFAULT 'Forward' AFTER File_Directory
-- Successful added a column after File_Directory with header Microphone and default was Forward for all entries/rows.
IF (SELECT File_Directory FROM audio WHERE File_Driectory = 'Home')
SET Microphone = 'Not Forward'
END IF;
-- Here I want to change the Microphone column (3rd column now - previously added and set default to be 'forward') to be 'Not Forward' if the File_Directory column has variable/entry to be home.
另外,如果我执行以下操作,我会得到我正在寻找的条目,并且我想更改第三列。它打印出包含多行的列,其中 'Home' 被写为条目。这些行是我想更改我添加的新列的行,我想将其从默认 'forward' 更改为 'not forward'.
SELECT File_Directory FROM audio WHERE File_Driectory = 'Home'
我的问题出在最后一条语句上,因为我无法设置或更改第三列的条目...不是我不能,我不确定我在 IF 上做错了什么陈述。我希望我提供的代码足以给我一个快速的解决方案。我省略了其他 4 个列名,因为它们不相关,我也没有在其中做任何事情。我再次从 csv 加载数据,成功添加了一个带有 header/and 默认字段的列(这是大多数),我只需要更改新列需要具有不同 name/entry 的几个地方。
任何建议都会有所帮助!谢谢!
我什至不用 IF 语句就能轻松解决这个问题。我使用了更新命令。
UPDATE audio SET Microphone = 'Not forward' WHERE File_Directory = 'Home'
我首先创建一个 table,其中有 6 个 headers/columns,然后我在其中添加一列并为该新列设置默认值。我要修改的部分是我设置的新列。我有一些默认值会更改的地方 - 基于纯粹来自我导入的数据的不同列。
我的代码如下:
SET GLOBAL local_infile=1;
CREATE TABLE audio(
File_Name CHAR(4) PRIMARY KEY,
File_Subdirectory CHAR(50),
....,
....,
....,
....,
);
-- Created table with the headers described above (left out 4 column names)
LOAD DATA LOCAL INFILE 'audio.csv'
INTO TABLE audio
FIELDS TERMINATED BY ',';
-- Loaded data into the right columns, even when I check with SELECT * FROM audio looks good
ALTER TABLE audio ADD COLUMN Microphone VARCHAR(15) DEFAULT 'Forward' AFTER File_Directory
-- Successful added a column after File_Directory with header Microphone and default was Forward for all entries/rows.
IF (SELECT File_Directory FROM audio WHERE File_Driectory = 'Home')
SET Microphone = 'Not Forward'
END IF;
-- Here I want to change the Microphone column (3rd column now - previously added and set default to be 'forward') to be 'Not Forward' if the File_Directory column has variable/entry to be home.
另外,如果我执行以下操作,我会得到我正在寻找的条目,并且我想更改第三列。它打印出包含多行的列,其中 'Home' 被写为条目。这些行是我想更改我添加的新列的行,我想将其从默认 'forward' 更改为 'not forward'.
SELECT File_Directory FROM audio WHERE File_Driectory = 'Home'
我的问题出在最后一条语句上,因为我无法设置或更改第三列的条目...不是我不能,我不确定我在 IF 上做错了什么陈述。我希望我提供的代码足以给我一个快速的解决方案。我省略了其他 4 个列名,因为它们不相关,我也没有在其中做任何事情。我再次从 csv 加载数据,成功添加了一个带有 header/and 默认字段的列(这是大多数),我只需要更改新列需要具有不同 name/entry 的几个地方。
任何建议都会有所帮助!谢谢!
我什至不用 IF 语句就能轻松解决这个问题。我使用了更新命令。
UPDATE audio SET Microphone = 'Not forward' WHERE File_Directory = 'Home'