【问题标题】:sql insert row based on other table valuesql根据其他表值插入行
【发布时间】:2016-12-15 13:02:21
【问题描述】:

我有 2 个表,分别称为 table1 和 table2。 table1 有 key、c​​ondition、level 和 conditionvalue 列,table2 有 key 和 value 列。

table1 行

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

我将从用户或其他来源获取输入(键和值),并且我需要根据以下条件将这些值插入到 table2 中。

如果键为 1 且值 > 10 或值等于 5,则我需要插入。 如果 key 为 2 且 value > 20 或 value 小于 5 则我需要插入。

如何使用 sql insert 语句实现这一点。

【问题讨论】:

  • 哪个 DBMS? SQL Server、Oracle、MySQL、...?
  • 搜索您喜欢的 DBMS 的动态 SQL
  • sql中的CASE可以帮到你吗?
  • 我的 C 应用程序是 sqlite3

标签: sql sql-insert


【解决方案1】:

试试这个:

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)

【讨论】:

    【解决方案2】:

    试试这个:

    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))
    

    【讨论】:

    • Table1 行是动态添加的。所以我需要一个动态的解决方案
    猜你喜欢
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多