首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有join、HAVING和GROUP BY的MySQL DELETE语句

带有join、HAVING和GROUP BY的MySQL DELETE语句
EN

Stack Overflow用户
提问于 2012-12-27 16:24:28
回答 4查看 5.6K关注 0票数 3

我有一个项目表和另一个报表。每个报表都有一个外键,链接到要报告的项。

我正在尝试删除此查询中显示的所有项目:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT items.id, title, SUM(weight) AS total_weight, SUM(weight)*10/views AS score 
FROM items, reports 
WHERE items.id = reports.item_id 
GROUP BY items.id 
HAVING score >= 50;

尝试像这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELETE items 
FROM (SELECT items.id, title, SUM(weight) AS total_weight, SUM(weight)*10/views AS score 
    FROM items, reports 
    WHERE items.id = reports.item_id 
    GROUP BY items.id 
    HAVING score >= 50)
AS T;

显示以下错误消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ERROR 1109 (42S02): Unknown table 'items' in MULTI DELETE
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-27 16:37:07

在MySQL中,您必须小心使用子查询。我认为下面的方法是可行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELETE FROM items 
WHERE id IN (select *
             from (SELECT items.id 
                   FROM items join reports 
                        on items.id = reports.item_id 
                   GROUP BY items.id 
                   HAVING SUM(weight)*10/views >= 50
                  )
            )

它通过使用附加子查询诱使编译器接受查询。我还修正了你的join语法。

但是,下面使用相关子查询将查询重写为更常见的语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delete from items
where exists (select r.item_id
              from reports r
              where r.item_id = items.item_id 
              group by r.item_id
              having SUM(r.weight)*10/items.views >= 50
             )

这是猜测weightviews来自前面的reports. Otherwise, you need to put the项的别名。

票数 4
EN

Stack Overflow用户

发布于 2012-12-27 16:26:32

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELETE FROM items 
WHERE 
  id IN (
    SELECT 
      items.id 
    FROM items, reports 
    WHERE items.id = reports.item_id 
    GROUP BY items.id 
    HAVING SUM(weight)*10/views >= 50)
票数 4
EN

Stack Overflow用户

发布于 2012-12-27 16:27:51

我相信您的delete语句是错误的。应该是delete from tablename where [condition]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    DELETE FROM items 
    WHERE 
      id IN (
        Select T.id from (SELECT items.id, title, SUM(weight) AS total_weight, SUM(weight)*10/views AS score 
FROM items, reports 
WHERE items.id = reports.item_id 
GROUP BY items.id 
HAVING score >= 50) T)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14057791

复制
相关文章
Qml引用Loader组件属性
  本例子使用Loader加载myComponent组件,然后通过Loader的item属性设置myComponent的value属性。
Qt君
2023/03/17
8540
Qml引用Loader组件属性
Qml属性绑定小误区
  下面代码中,Text对象绑定了car.wheels属性。当onCompleted执行完成时,car.wheels = 6也同样执行完成了。预想结果是Text对象会动态更新,但实际上是不会更新的。
Qt君
2023/03/17
5630
Qml属性绑定小误区
从javascript脚本混淆说起
脚本病毒是一个一直以来就存在,且长期活跃着的一种与PE病毒完全不同的一类病毒类型,其制作的门槛低、混淆加密方式的千变万化,容易传播、容易躲避检测,不为广大网民熟知等诸多特性,都深深吸引着各色各样的恶意软件制作者 … 小到一个不起眼的lnk快捷方式,大到一个word文档,都是脚本的载体。本文主要以 js脚本为例(特指JScript,下同 ),具体结合实际样本,讲述混淆方式及其混淆类型检测相关知识,文章受限于样本个数及其种类,存在一定的局限性,但大致情况应当不会相差太大。本系列首先会对jscript及其脚本进行
FB客服
2018/02/28
1.5K0
从javascript脚本混淆说起
javascript脚本编辑错误集(持续更新)
Each child in a list should have a unique “key” prop Dom在渲染数组时,需要一个key,不然嵌套数组时会引起歧义 <div className="classlist-contaier"> {this.state.classList.map((item, index) => { return <ClassItem key={index}/>; })} </div> validateDOMNesting(…):
sofu456
2021/02/02
6460
Qml好用的default附加属性
  看似很没用的属性却说有用,还说好用。第一个例子看起来和常规做法差不多。那么我们看看第二个例子使用起来是如何好用的。   Group.qml组件:
Qt君
2019/07/15
1.6K0
Qml好用的default附加属性
Qml属性implicitWidth/Height与width/height区别
  implicitWidth/Height一般用在可重用控件,它也不是必要的,QtQuick可以没有者两个属性,只因为了方便而存在。qt例子描述到什么情况下用到implicitWidth/height属性,就是Image。它提供了项目的自然大小的提示,但没有强制执行此大小。图像的自然尺寸将图像文件中的一个像素映射到屏幕上的一个像素。但它允许我们拉伸它,因此大小不会被强制执行并且可以被覆盖。另外有些控件直接设置width/height会造成性能损失(Text,TextEdit).
Qt君
2019/07/15
1.7K0
QML教程-属性绑定与赋值
写QML界面会经常使用到很多的属性,其中属性的绑定与解绑尤其重要,决定着该界面属性是否能动态更新的功能。本文介绍属性的绑定与非绑定特性。 1.属性绑定 使用 :操作符,作用是左值绑定右值。 例: Item { property color myColor: "white" ... Rectangle { color: myColor ... } } color绑定父控件 myColor属性。 2.属性非绑定(解除绑定) 使用 =操作符,作用是左值解除右值绑定 例: Item {
Qt君
2019/07/15
2.1K0
如何从JavaScript对象中删除属性?
在使用 JavaScript 中的对象时,你可能会遇到需要从对象中完全删除属性的情况。为实现这一点可以有好几个选择:
疯狂的技术宅
2021/04/01
12.4K0
从网络导入Qml控件
先看一个小例子: import QtQuick 2.0 import "http://example.com/QtCompoment/" Rectangle { Button { } Label { } CheckBox { } } 步骤: example.com网站点根目录下存在一个QtComponent文件夹。 QtComponent文件夹里面包含以下文件: qmldir Button.qml Label.qml CheckBox.qml qmldir文件需要有以下内容描述
Qt君
2023/03/17
4090
从网络导入Qml控件
shell脚本实际运用_shell脚本调用另一个脚本
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168438.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
9980
git更新脚本
说明 此脚本用于更新git仓库,主要用于使用ssh克隆的仓库,使用https克隆或者直接下载的不可使用此脚本进行更新,编写此贴用于保存脚本以供后用 Linux平台 Linux平台下的脚本使用的是bash shell脚本进行编写的 #! /bin/bash ######################################## #Usage: ./update comment "msg" ######################################## echo st
impressionyang
2021/05/06
8120
用一个属性代理另一个对象的属性
今天来分享给大家一个属性代理的例子。总是有人问我属性代理有什么用,这个也许可以为你提供些思路。
bennyhuo
2020/02/20
8840
翻译 | QML编码约定
如果列表对象仅包含一个元素,则通常会省略方括号。例如,一个组件仅具有一个状态是很常见的。在这种情况下,如果这样写:
Qt君
2020/02/14
9400
JavaScript之firstChild属性、lastChild属性、nodeValue属性学习
1.数组元素childNodes[0]有更直观易读的优点,这边在介绍一个有同样功能的属性,且更加语义化-------->firstChild属性 假设我们需要目标元素节点下的所有子元素中的第一个子元素我们可以这样做: 目标元素节点下的子元素节点数组.firstChild 这句代码等价于 目标元素节点下的子元素节点数组[0]; 目标元素节点.childNodes[0] 这句代码等价于 目标元素节点.firstChild; 与此类推当我们需要目标元素节点下的所有子元素节点中的最后一个元素我们可以这样做: 目标
郑小超.
2018/01/24
1.7K0
JavaScript之childNodes属性、nodeType属性学习
1.childNodes属性:在一颗节点树上,childNodes属性可以用来获取任何一个元素的所有元素,它是一个包含这个元素所有子元素的数组。 <body> <script type="text/javascript"> function countBodyChildren() { var allelements = document.getElementsByTagName("body"); aler
郑小超.
2018/01/24
1.1K0
JavaScript数据属性和访问器属性
看《深入理解JavaScript》的this篇时看到“访问器属性”这个不熟悉的名词,百度后找到两篇感觉比较合适的文章,整合记录一下,以参考资料2为主,参考资料1为辅助补充。
WindCoder
2018/09/20
1.6K0
Three.js入门
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精采的演示。Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。 Three.js的核心五步就是: 1.设置three.js渲染器 2.设置摄像机camera 3.设置场景scene 4.设置光源light 5.设置物体object 1.设置three.js渲染器 三维空间里的物体映射到二维平面的
李海彬
2018/03/22
7.8K0
JavaScript——对象的属性
在JavaScript中,所有的对象都是一组属性的集合,属性可以是数值,字符串等原始类型,也可以是函数,或者是其他对象。
Html5知典
2019/11/26
2.5K0
JavaScript实现私有属性
JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承;再比如JavaScript不能实现信息的隐藏,不能实现私有成员。本文并不是为了打破以上误解(实际上笔者自己也有困惑),只是简单介绍几种JavaScript实现私有属性的方式,以及各自的优劣。 1. 基于编码规范约定实现方式 很多编码规范把以下划线_开头的变量约定为私有成员,便于同团队开发人员的协同工作。实现方式如下: function Person(name){ this._na
寒月十八
2018/01/30
9700
javascript的NaN属性
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
OECOM
2020/07/01
1.1K0

相似问题

从另一个QML设置QML属性

11

如何从函数内部更新QML属性

19

不更新属性别名的QML Javascript字典

11

QML从另一个QML对象访问附加属性

13

从C++更新QML窗口属性标志

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文