2016-12-15 96 views
1

我有2個表稱爲table1和table2。表1具有鍵,條件,級別和條件值列,而表2具有鍵和值列。基於其他表值的SQL插入行

表1行

key   condition level  conditionVal 
1    >  error  10 
1    =  info   5  
2    <  warning  5 
2    >  info   20 

我會得到輸入來自用戶或其他源(鍵和值)和值I需要插入到基於下述條件表2。

如果密鑰是1並且值大於10或者值等於5那麼我需要插入。 如果鍵是2並且值大於20或者值小於5,那麼我需要插入。

如何使用sql insert語句實現此目的。

+2

這DBMS? SQL Server,Oracle,MySQL,...? – CeOnSql

+1

爲您的首選數據庫管理系統搜索動態SQL – JohnHC

+0

SQL中的CASE可以幫助您? – Milaci

回答

0

試試這個:

IF EXISTS(
      SELECT 1 
      WHERE (@Key=1 AND (@value>10 @value=5)) OR (@Key=2 AND (@value>20 OR @value<5)) 
                          ) 

INSERT INTO Table2 (column1) VALUES (@values) 
0

試試這個:

INSERT INTO table2 (KEY, value) 
    SELECT KEY , conditionVal 
    FROM table1 
    WHERE KEY IN 
     (SELECT KEY 
     FROM table1 
     WHERE (KEY  =1 
     AND (value  >10 
     OR value   =5)) 
     OR (KEY   =2 
     AND (value  >20 
     OR value   <5)) 
     AND 
    conditionVal IN 
     (SELECT conditionVal 
     FROM table1 
     WHERE (KEY  =1 
     AND (value  >10 
     OR value   =5)) 
     OR (KEY   =2 
     AND (value  >20 
     OR value   <5)) 
+0

Table1行是動態添加的。所以我需要一個動態解決方案 – impulse