根据条件从多个表中插入

时间:2013-11-08 17:25:12

标签: sql

请帮帮我。

我正在尝试根据条件插入表单2不同的表并收到错误:

  

关键字'CASE'附近的语法不正确。

 INSERT INTO Table_1 (col1, col2, col3)
     CASE WHEN @var = 'L' THEN 
        SELECT FROM Table_2 col1, col2, col3
     WHEN @var = 'S' THEN 
        SELECT FROM Table_3 col1, col2, col3
    END 

声明有什么问题? 这甚至可能吗? 感谢。

2 个答案:

答案 0 :(得分:3)

您需要使用if-else。正如marc_s所说,caseswitch不同,并且不用于sql

中的控制流程
IF @var='L'
BEGIN
    INSERT INTO tbl ( c1, c2, c3 )
    SELECT c1, c2, c3
    FROM tbla
END
ELSE IF @var='S'
BEGIN
    INSERT INTO tbl ( c1, c2, c3 )
    SELECT c1, c2, c3
    FROM tblb
END

如果您想将此作为一个声明,那么我可以相信使用UNION ALL

INSERT INTO tbl ( c1, c2, c3 )
SELECT c1, c2, c3
FROM tbla
WHERE (@var='L')
UNION ALL
SELECT c1, c2, c3
FROM tblb
WHERE (@var='S')

虽然我不推荐它。

答案 1 :(得分:1)

这不是有效的TSQL。这可能会改为:

IF @var = 'L'
BEGIN
    INSERT INTO Table_1 (col1, col2, col3)
    SELECT col1, col2, col3 FROM Table_2 
END

IF @var = 'S'
BEGIN
    INSERT INTO Table_1 (col1, col2, col3)
    SELECT col1, col2, col3 FROM Table_3 
END