【问题标题】:How to use replace to non unique keys? mysql [duplicate]如何使用替换非唯一键? mysql [重复]
【发布时间】:2014-11-22 22:11:27
【问题描述】:

我有这张桌子:

rating | businessId | userId
============================
  1          200        1
  2.5        200        2

用户不能有两行具有相同的businessId, 例如:

    rating | businessId | userId
    ============================
      1          200        1
      2.5        200        1

这是不正确的;

我的服务器接收到 businessId、userId 和 rating。

那么它应该更新具有相同userId的行,如果存在businessId,则创建新行。

我怎样才能用一个查询来实现呢?

【问题讨论】:

  • 这是关于 MySQL 还是关于 Microsoft SQL Server?你已经用两者标记了它。
  • 这是关于 mysql 的!对不起

标签: mysql sql


【解决方案1】:

可以使用 MySQL 过程执行单个查询,该查询将插入或更新一行。但是,最好先测试该行是否以您选择的语言存在,然后根据需要插入或更新。这将允许您向用户提供适当的反馈,以及其他取决于该行之前是否存在的事情。

【讨论】:

    【解决方案2】:

    假设你得到这三个值@rating ,@userId,@businessId 然后你会写你的UPSERT(更新/插入)查询这样的.....

    IF EXISTS (SELECT 1 FROM dbo.TableName 
                WHERE userId = @userId AND businessId = @businessId)
     BEGIN
            UPDATE dbo.TableName 
             SET businessId = @businessId
                ,rating     = @rating
            WHERE  userId = @userId
     END
    ELSE 
     BEGIN
        INSERT INTO dbo.TableName (userId, businessId, rating)
        VALUES (@userId, @businessId, @rating)
     END
    

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 2018-06-05
      • 2017-04-22
      • 2013-09-07
      • 2021-10-08
      • 1970-01-01
      • 2021-05-28
      • 2019-04-02
      相关资源
      最近更新 更多