【问题标题】:updating two tables with a single query [duplicate]使用单个查询更新两个表 [重复]
【发布时间】:2013-01-01 11:14:02
【问题描述】:

可能重复:
MySQL, update multiple tables with one query

我想知道如何使用 MySql 和 C# 用一个查询更新两个不同的表。

这是我从数据库中读取数据的查询。

string sql = @"SELECT clb.clube AS nome, clb.email AS email, clb.telefone AS 
telefone, usr.login AS login, usr.senha AS senha 
FROM clubes AS clb 
INNER JOIN usuarios AS usr ON usr.nome = clb.clube 
WHERE usr.login = @log";

请注意,我从usrclb 获取数据。现在,我想更新它。我怎样才能做到这一点?

【问题讨论】:

标签: c# mysql visual-studio-2010


【解决方案1】:

有几种方法可以做到这一点,但这样的事情应该适合你:

UPDATE clubes, usuarios
SET clubes.clube='SomeVal', 
   usuarios.senha='SomeVal'
WHERE usuarios.nome = clubes.clube
  AND usr.login = 'SomeVal';

祝你好运。

【讨论】:

  • 我不知道 MySQL 已经实现了这个,我在我的回答中说它是从另一个帖子中提取的,我只是忘记在它周围加上引号。根据我的经验,通常这些类型的语句会失败。即使您使用适当的规则定位视图。
  • 别担心,只是想让您知道它无法完成。我没有给你投反对票,因为你的 SQL 是正确的并且可以工作,但不确定是谁做的。祝你好运。
  • 我不赞成,因为“我知道你在使用 MySQL,但不幸的是同样的规则适用”(虽然没有发表评论,因为你已经解释说)。
【解决方案2】:

您可以在UPDATE 语句中加入表格:

UPDATE clubes AS clb INNER JOIN usuarios AS usr ON usr.nome = clb.clube
SET    clb.telefone = ...,
       usr.senha    = ...
WHERE  usr.login = @log

【讨论】:

    【解决方案3】:

    请尝试一下:

    UPDATE clubes clb
    INNER JOIN usuarios AS usr 
    ON (usr.nome = clb.clube) 
    SET youcolumns....
    WHERE usr.login = @log
    

    【讨论】:

    • 实际上只是登录没有更新...可能是因为我使用登录字段来更新并在 WHERE 子句中...你想什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多