如何将table01的值与table02中的列名匹配,并更新该列值sql

时间:2015-07-24 06:28:47

标签: sql oracle

我们有一张表

table01 (rollno, etcs100, etcs101, etcs102)
table02 (serialno, subjectcode)

我想从table02中选择一个值(即subjectcode =“etcs100”) 并匹配table01列名称中的此值,并将此列值更新为1.

UPDATE TABLE01
SET (SELECT SUBJECTCODE 
     FROM table02 WHERE SERIALNUMBER = '1') 
         = (SELECT SUBJECTCODE FROM table02 
             WHERE SERIALNUMBER = '1') + 1
WHERE rollno = 1

我们正在寻找这样的查询。 我们正在使用oracle数据库

1 个答案:

答案 0 :(得分:0)

您需要为此使用动态SQL。语法因数据库风格而异。以下是Oracle的语法。

declare
    l_col_name varchar2(30);
begin
    SELECT SUBJECTCODE 
    into l_col_name
    FROM table02 
    WHERE SERIALNUMBER = '1';

    execute immediate
        'UPDATE TABLE01 SET '|| l_col_name || ' = '
              || l_col_name || ' + 1 WHERE rollno = 1'
    ;
end;

MySQL提供与预处理语句类似的功能。 Find out more