MySQL INSERT INTO / ON DUPLICATE KEY 与 SELECT 语句问题

2023-12-01

你好 - 我是 MySQL 菜鸟。我有一个包含各种企业列表的表,我正在尝试填充第二个名为“城市”的表,其中包含唯一的城市名称以及每个城市的列表数量。我可以执行 SELECT 语句来获取这些数据,如下所示:

SELECT city,state,sum(count)
FROM (
SELECT city,state, 1 AS count FROM listings
) results
GROUP BY city
ORDER BY sum(count) DESC,city;

但是,现在我想更新表,但我似乎无法得到正确的语句来工作。这是我得到的最新消息,但我目前收到“组函数无效使用”错误。

INSERT INTO cities(city,state,size)
SELECT city,state,sum(count)
FROM (
SELECT city,state, 1 AS count FROM listings
) results
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), size=sum(count); 

任何帮助表示赞赏!


像这样简单的事情会起作用吗?

insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state

group by应确保没有重复,这样就不需要on duplicate key。您正在执行的 sum() + 子查询操作看起来就像您只是在尝试执行 count(*) 操作。

您收到的具体错误是由于 size=sum(count) 造成的。在批量插入中,执行此操作的正确方法是 size=values(size),请参阅上的文档values().

EDIT:

如果它为每个城市添加另一个条目,那么城市上没有唯一索引,并且重复键无论如何也不会执行任何操作。

如果您在(城市,州)上添加唯一索引,那么您可以添加on duplicate key update size=values(size)对于上面的查询,它将更新每条记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL INSERT INTO / ON DUPLICATE KEY 与 SELECT 语句问题 的相关文章

随机推荐

  • 用于个人粉丝页面的 Facebook Messenger 聊天机器人

    我使用 Dialogflow 创建了一个聊天机器人 将其连接为我的个人粉丝页面 我的应用程序的粉丝页面 的 Facebook Messenger 聊天机器人 我通过了第一次审核并获得批准 下一步是 验证我的业务 我不是一家企业 我只是一个个
  • 在窗口应用程序中使用 HttpContext.Current.Server.MapPath?

    我可以在窗口应用程序中做这样的事情吗 HttpContext Current Server MapPath Email ForgotPassword txt 该项目是一个基于网络的应用程序 我的下一个项目基本上是一个窗口服务 寻求建议 要获
  • 搜索列表列表中一列的最大数字[重复]

    这个问题在这里已经有答案了 我有一份清单 list 1 2 5 2 8 7 3 6 9 我想找到第三列的最大数字 所以我尝试了 zipped zip list print max zipped 2 但它没有显示最大的数字 有人知道原因和解决
  • rpy2 在 debian 上安装问题

    我已经尝试了所有我能想到的在 debian 服务器上安装 RPy2 的安装方法 但无论如何我都收到相同的消息 我已经在我的Mac上成功安装并使用了它 我可能缺少什么吗 start Processing rpy2 Running setup
  • 如何异步返回一个sequelize实例?

    我似乎无法正确通过sequelize对象从service js文件到index js续集变量 有什么地方看起来不合适吗 index js let sequelize let contractModel async gt sequelize
  • PHP-FPM 不写入错误日志

    我刚刚安装了一个 nginx php fpm 服务器 一切看起来都很好 除了 PHP FPM 从不将错误写入其日志 fpm conf default listen var run php fpm default sock listen al
  • 如何使用 F# 发牌

    我一直致力于使用 F 对流行纸牌游戏 情书 进行建模 以了解有关函数式编程的更多信息 module Game open Cards open Players type Deck Card list let dealACard deck De
  • 如何在 firebird 中以 YYYYMMDD 形式获取今天的日期

    如何在 firebird 中以 YYYYMMDD 形式获取今天的日期 我查看了下列的但不知道如何写这个 我认为你可以这样做 select replace cast cast Now as date as varchar 10 from rd
  • 如何处理Windows窗体上动态添加复选框的事件

    我能够在 Windows 窗体上动态添加复选框并将数据值添加到其文本属性 单击任何复选框后 我都会运行一个程序 该程序将禁用某些其他复选框 我无法找到它的事件处理程序 你试过这个吗 CheckBox check new CheckBox c
  • 如何在spark Dataframe中的列之间进行一些计算?

    例如 我想加上 la 和 lon 列并在另一列中输出结果 userid la lon u3 2 0 2 0 u4 1 0 1 0 u5 2 0 2 0 u1 1 6666666666666667 2 6666666666666665
  • 关于MVC和Identity的两个问题

    我对身份和 MVC 非常陌生 我正在尝试创建一个 MVC 应用程序作为我的第一个项目 我已经能够关注一些教程并已成功向我的 ApplicationUser IdentityUser 类添加其他属性 public class Applicat
  • 我想使用短信管理器从 Android 应用程序发送短信

    我尝试过发送 但短信在不知情的情况下自动发送 我想发送包含以下字段的短信To从我的代码中预定义并可以获得内置的短信应用程序 My Code holder SMS setOnClickListener new OnClickListener
  • 带有关系表的 YII CActiveDataProvider

    我有三张桌子 内容 ID 内容类别 id 内容 id 类别 类别 ID 内容关系 Categories gt array self MANY MANY Category ContentCategory id content id categ
  • Discord JS 用户机器人

    使用用户帐户登录 好吧 我注意到在 Discord 上使用 Python 机器人非常容易 但在 Node JS 上就不可能了 我的意思是 必须有一种方法可以使用 Node JS 登录用户帐户 有人知道吗 Error 每当尝试使用 Disco
  • Javascript对象字面量,如何解决上下文?

    我想开始正确组织我的代码 所以我想使用对象文字 在下面的例子中 我正在做一个伪类 我想要那个init 可以用作构造函数 但不幸的是 我没有看到如何根据对象上下文设置属性 var car context this wheels 0 color
  • 对对象向量进行排序

    我有一个填充了一些顶点对象实例的向量 需要根据其 x 及其后的 y 坐 标对其进行排序 vertex h ifndef VERTEX H define VERTEX H 1 class Vertex private double x dou
  • 使用 php、mysql 和 html 创建登录表单

    我想创建一个有效的登录表单 这是我所做的 显示无法选择数据库 编辑login php文件
  • C 内存分配:为什么内存不够(仅 250K)

    我无法弄清楚我的 c 代码无法分配 250K 内存的原因 这是分配代码 struct IMAGE int width height maxval char data void raiseError char msg printf s msg
  • 将字符串中的日期转换为具有相同格式的日期时间

    我有一个字符串 其中存储了日期 String date 03 05 2013 00 00 00 我将其解析为日期时间 如下所示 DateTime Start DateTime Parse date Start ToString 给我 3 5
  • MySQL INSERT INTO / ON DUPLICATE KEY 与 SELECT 语句问题

    你好 我是 MySQL 菜鸟 我有一个包含各种企业列表的表 我正在尝试填充第二个名为 城市 的表 其中包含唯一的城市名称以及每个城市的列表数量 我可以执行 SELECT 语句来获取这些数据 如下所示 SELECT city state su