GVKun编程网logo

MySQL DELETE FROM以子查询为条件(mysql删除子查询)

2

关于MySQLDELETEFROM以子查询为条件和mysql删除子查询的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于MySqlcmd下的学习笔记——有关子查询的操作(where型,fro

关于MySQL DELETE FROM以子查询为条件mysql删除子查询的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)、MySQL delete 嵌套子查询问题、mysql from子查询、mysql update from 子查询等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

MySQL DELETE FROM以子查询为条件(mysql删除子查询)

MySQL DELETE FROM以子查询为条件(mysql删除子查询)

我试图做这样的查询:

DELETE FROM term_hierarchy AS thWHERE th.parent = 1015 AND th.tid IN (    SELECT DISTINCT(th1.tid)    FROM term_hierarchy AS th1    INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015)    WHERE th1.parent = 1015);

您可能会说,如果相同的提示还有其他父母,我想删除1015的父母关系。但是,这产生了一个语法错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''AS thWHERE th.parent = 1015 AND th.tid IN (  SELECT DISTINCT(th1.tid)  FROM ter'' at line 1

我已经检查了文档,并独自运行了子查询,这一切似乎都已结束。任何人都可以找出这里有什么问题吗?

更新 :如以下回答所示,MySQL不允许在子查询中使用该条件删除要删除的表。

答案1

小编典典

您无法指定要删除的目标表。

解决方法

create table term_hierarchy_backup (tid int(10)); <- check data typeinsert into term_hierarchy_backup SELECT DISTINCT(th1.tid)FROM term_hierarchy AS th1INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015)WHERE th1.parent = 1015;DELETE FROM term_hierarchy AS thWHERE th.parent = 1015 AND th.tid IN (select tid from term_hierarchy_backup);

MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)

MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)

先找到goods表

查询goods_id最大的商品

       where型的子查询

查询goods_id最大的商品(不能用排序)

把两步写成一步,就是子查询

        from型子查询

 查找出每种cat_id下goods_id最大的商品

 思路:1. 先用cat_id进行排序,再用goods_id进行降序排列

    2. 再用Mysql中特有的group by 语句(只有在MySQL中group by 才能查询goods_name

      并且group by查到的goods_name只能显示第一个查到的内容)

 

exists 型子查询

 要求先建一个category表

mysql> create table category(
    -> cat_id int auto_increment primary key,
    -> cat_name varchar(20) not null default ''''
    -> )engine myisam charset utf8;
Query OK, 0 rows affected (0.07 sec)

 

mysql> insert into category
-> values
-> (1, ''手机类型''),
-> (2, ''CDMA手机''),
-> (3, ''智能手机''),
-> (4, ''4G手机''),
-> (5, ''**手机''),
-> (6, ''手机配件''),
-> (7, ''充电器''),
-> (8, ''耳机''),
-> (9, ''电池''),
-> (11, ''内存卡和读卡器''),
-> (12, ''充值卡'');

可以看出有些cat_id下是没有产品的

 只把有商品的cat_id取出来

 

 

MySQL delete 嵌套子查询问题

MySQL delete 嵌套子查询问题

有这样一个例子:

删除除了编号 id 不同, 其他都相同的学生冗余信息。

感觉很简单,先按照除了编号以外的字段分组,查询出结果,然后删除 id 不在查询结果中的数据。

sql 语句就是这样:

DELETE FROM table2 WHERE id NOT IN (SELECT MAX(id) AS id FROM table2 GROUP BY NAME,studentID)

但是结果会报错:You can''t specify target table ''table2'' for update in FROM clause

报错原因是因为不能先从同一张表中查出数据,然后再在同一张表中进行 update 操作。

可以通过建一张临时表来解决这个问题。

SELECT tmp.id FROM (SELECT MAX(id) AS id FROM table2 GROUP BY NAME,studentID) tmp

然后删除 id 不在这张临时表中的数据。最后的 sql 语句就是这样:

DELETE FROM table2 WHERE id NOT IN (SELECT tmp.id FROM (SELECT MAX(id) AS id FROM table2 GROUP BY NAME,studentID) tmp)

mysql from子查询

mysql from子查询

题目:查询每个栏目下id最大的商品信息

使用的表goods,表如下图所示

语句:

select * from (select * from goods order by cat_id asc,id desc) group by cat_id;

求大神看下我上面我写的语句存在什么问题,为什么会报1248的错

错误信息:ERROR 1248 (42000): Every derived table must have its own alias

from子查询  不就是把select * from goods order by cat_id asc,id desc语句查询的结果当作一个临时表看的吗?为什么错误信息说要表要有自己的别名呢?

mysql update from 子查询

mysql update from 子查询

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

mysql update from 子查询

mssql 子查询更新

update log set uin= b.uin
from log a,logs b
where a.accountuin = b.accountuin

mysql 不支持 update 子查询更新

找了半天资料 终于搞定了...

update `log` a inner join `logs` b on a.`accountuin` = b.`accountuin`
set a.`uin` = b.`uin` where a.`accountuin` = b.`accountuin`

这样就能 将查询出来的字段批量更新过去了...

今天关于MySQL DELETE FROM以子查询为条件mysql删除子查询的介绍到此结束,谢谢您的阅读,有关MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)、MySQL delete 嵌套子查询问题、mysql from子查询、mysql update from 子查询等更多相关知识的信息可以在本站进行查询。

本文标签: