【问题标题】:Insert data using INSERT INTO command.使用 INSERT INTO 命令插入数据。
【发布时间】:2014-05-12 10:55:20
【问题描述】:

我有两个表名 users 和 users_images。两个表都有 userId 的值。喜欢 我的用户表


|   userId    |    userName    |    user_address    |
|    2    |    John    |    CN-2, UK    |
|    3    |    Amit    |    India    |
|    4    |    David    |    Us    |
|    5    |    Shan    |    Canada    |
.
.
...... and so on

|    125000    |    Naved    |    Ukran    |

**和我的图像表包含用户 ID 和图像名称。

现在我想在不使用任何循环的情况下将 ImageName 字段合并到用户表(我想用单个查询来完成(我有数百万条记录,我必须多次这样做才能创建临时表))

【问题讨论】:

    标签: php mysql sql database


    【解决方案1】:
    update users u
    set
      u.imageName = (
           select imageName 
           from users_images i 
           where i.userid = u.userid GROUP BY u.userId )
    

    【讨论】:

    • 我看到您编辑了我的查询,因为您有多个图像。我删除了DISTINCT,因为你不需要它。 MySQL 自动为您分组的用户 ID 选择单个 imageName。在其他数据库中,您需要使用 min(imageName) 之类的函数来选择单个图像名称。
    • 当然,每个用户只剩下一张图像,所以当您从users_images 中删除图像时,基本上您会丢失数据,因为不会存储所有以前的用户图像。跨度>
    【解决方案2】:

    你可以使用ON DUPLICATE KEY 例如:

    INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE c=c+1;
    

    【讨论】:

      【解决方案3】:

      我认为您可以像这样使用更新:

      UPDATE Users
      SET ImageName =
        (SELECT ImageName
         FROM UserImages
         WHERE UserImages.UserID = Uers.UserID)
      

      请先备份您的数据库

      【讨论】:

      • 实际上的问题是我为某些用户提供了不止一张图片。但我通过在您的查询中添加 GROUP BY 得到了解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多