Postgres SQL Insert命令与WHERE

时间:2016-03-15 12:00:03

标签: c# sql postgresql

我认为这很容易,但我不能让它发挥作用:

Table=(int,int,text)

NpgsqlCommand command = new NpgsqlCommand("select * from database_data ncd inner join players p on p.player_id = ncd.player_id where p.playername ='Name1', conn);

string _data = (String)command.ExecuteScalar();

现在我得到了数据....现在我只想写回来......但是......

NpgsqlCommand command2 = new NpgsqlCommand("Update database_data ncd inner join players p on p.player_id = ncd.player_id where p.playername ='Name2' + "'", conn);
command2.Parameters.Add(?????)
command2.ExecuteNonQuery();

我只设法更新整行。

NpgsqlCommand command2 = new NpgsqlCommand("insert into database_data values(1,2222,3333)", conn);
command2.ExecuteNonQuery();
conn.Close();

这很好用,但我不能将它与连接和where。

结合起来

如果加入不起作用,我可以简单地使用where player_id=x 并在其他地方获得player_id

2 个答案:

答案 0 :(得分:1)

从我最好的知识来看,pqsql中的更新语句应该看起来像

update <table> set field1=value1, field2=value2 .... from FROM_CLAUSE WHERE WHERE_CLAUSE

但是在您的代码中,您的陈述与此模板不匹配。那么,您能否更准确地说出您想要对数据做些什么?

答案 1 :(得分:0)

除非您有一个名为ncd.data的表:

,否则Postgres中的语法将失败
Update ncd.data 
    from data ncd inner join
         players p
         on p.player_id = ncd.player_id
    where p.playername ='Name2' + "'";

我猜你的意图是:

Update data ncd
    from players p
    where p.player_id = ncd.player_id and
          p.playername ='Name2' + "'";