比较两个表并更新第三个表

时间:2013-02-27 09:47:54

标签: c# sql

假设我在SQL “abc”中有一个表,其中有一个列“number”,此列包含(1,2,3,4)等。

在我的第二个表格中“xyz”我有一个“数字”列,此列包含(1,2,3,4,5,6,7,8,9)。

现在我想比较这两个并在第三个表中插入相等的数据。 那我怎么能这样做呢?

代码:

string str = "SELECT     Invoice_Details.PGI_ID, PARTY_BOOKING_DETAILS.PGI_ID AS abc ";
str += "FROM         PARTY_BOOKING_MAIN INNER JOIN ";
str += "    PARTY_BOOKING_DETAILS ON PARTY_BOOKING_MAIN.PBM_ID = PARTY_BOOKING_DETAILS.PBM_ID CROSS JOIN ";
str += "          Invoice_Details where PARTY_BOOKING_MAIN.PM_ID = 1 ";

SqlConnection con = new SqlConnection("data source = .; database = ePartyDatabase01; integrated security = true");
con.Open();
SqlCommand cmd1 = new SqlCommand("update Invoice_Details set [status] = @a", con);
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    if (dr["PGI_ID"].ToString() == dr["abc"].ToString())
    {

        cmd1.Parameters.AddWithValue("@a", 1);

    }
}

dr.Close();
cmd1.ExecuteNonQuery();

con.Close();

3 个答案:

答案 0 :(得分:0)

您可能想要使用某种查询:

insert into table3 (number)
select 
    t1.number
from abc t1
inner join xyz t2
    on t1.number = t2.number

答案 1 :(得分:0)

我还没有测试过这个,但你甚至可能不需要C#,尝试这样的事情:

SELECT xyz.number
INTO third_table
FROM (
   SELECT t1.number
   FROM first_table t1 JOIN second_table t2 ON t1.number = t2.number
) AS xyz

答案 2 :(得分:0)

也许是这样的:

INSERT INTO table3(number)
SELECT
    number
FROM
    xyz
WHERE NOT EXISTS
    (
        SELECT
            NULL
        FROM
            abc
        WHERE
            abc.number=xyz.number
    )