相关疑难解决方法(0)

更新具有重复值的行(在相同列中)

我想更新我的表,以便共享值(在相同列中)的行被标记为这样.

示例表定义:

CREATE TABLE `MyTable` (
  `id`  int NOT NULL ,
  `a`  varchar(10) NOT NULL ,
  `b`  varchar(10) NOT NULL , 
  `state`  tinyint NOT NULL , 
  PRIMARY KEY (`id`) 
) ;
Run Code Online (Sandbox Code Playgroud)

我想更新在同一列中共享值的每一行的"状态".因此,如果第一行具有"a = AAAA"而第二行具有相同的"a"值,则两者都应该更新.

我试过这个,但它太慢了(不比使用JDBC在Java中做得快):

declare mycursor cursor for select id, a, b from mytable;
open mycursor;
repeat
   fetch mycursor into idid, aa, bb;
   update mytable set state=1 where (a=aa, b=bb)
until done end repeat;
close mycursor;
Run Code Online (Sandbox Code Playgroud)

有什么想法让这种方式变得更好?多年来我没有做过任何体面的SQL.

mysql sql

3
推荐指数
1
解决办法
6790
查看次数

删除除一个以外的所有重复项

我们有一个表,business_usersuser_idbusiness_id我们有重复.如何编写一个删除所有重复项的查询?

mysql sql

3
推荐指数
1
解决办法
3845
查看次数

删除一个表中的值,该表的id在mysql中不存在于另一个表中

我最近开始使用表之间的关系,当我尝试连接2时,我发现有一些ID不存在外键.

对于这个问题,我们假设我有一个带有id和name的餐馆表,以及id为rest_id的菜单表,它是来自餐馆餐桌的外键.

我想删除所有菜单表中不存在的rest_id菜单.

我用过这个:

DELETE FROM `Menus` WHERE restid IN (SELECT DISTINCT `restid` from 
   `Menus` M left join `Eng_Restaurants` ER on M.`restid` = ER.`ID`
where ER.`ID` is null)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:#1093 - 您无法在FROM子句中为更新指定目标表'Menus'.

请注意,子查询确实返回在restaurants表中不存在的id:

(SELECT DISTINCT `restid` from 
       `Menus` M left join `Eng_Restaurants` ER on M.`restid` = ER.`ID`
    where ER.`ID` is null)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mysql sql

3
推荐指数
1
解决办法
2286
查看次数

UPDATE查询的WHERE子句中的SELECT查询

可能重复:
Mysql错误1093 - 无法在FROM子句中指定更新目标表

将SELECT查询放在UPDATE查询的WHERE子句中时出错.

我的查询是这样的:

UPDATE `subschedulesseats` m
SET m.studentid='1'
WHERE m.`seatid`= (
    SELECT h.`seatid`
    FROM `subschedulesseats` h
    WHERE h.`sessiontime`='02:30~04:00'
    ORDER BY h.`seatid` ASC
    LIMIT 2,1
)
Run Code Online (Sandbox Code Playgroud)

AND错误将显示如下:

"你不能在FROM子句中为更新指定目标表'm'"

我附上了错误显示的快照.

在此输入图像描述

请有人帮我解决这个问题吗?

先感谢您

mysql

2
推荐指数
1
解决办法
2万
查看次数

更新mysql表,从同一个表中选择

我是MYSQL查询语句的新手,我目前仍然坚持使用以下代码

UPDATE fb_messages
SET sent = 'Yes' 
WHERE msg_id = (SELECT MAX(msg_id) AS MSG_ID 
                FROM fb_messages
                WHERE sent = 'No')
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

#1093 - You can't specify target table 'fb_messages' for update in FROM clause
Run Code Online (Sandbox Code Playgroud)

我搜索了一个解决方案,以解决类似的情况,但我真的找不到,请帮助

mysql

2
推荐指数
1
解决办法
1万
查看次数

删除mysql中选定的行

我想删除一组行,它们具有与此 SQL 选择相同的属性。

SELECT item_id, count(*) as item_in_order
FROM items
GROUP BY order_id
HAVING item_in_order = 1
Run Code Online (Sandbox Code Playgroud)

换句话说,这意味着我有订单项,我想删除仅包含一项的订单中的行。

例如:

item_id    order_id
1          1
2          2
3          2
4          3
5          3
6          4
Run Code Online (Sandbox Code Playgroud)

所以我想删除 item_id 为 1 和 6 的行。

mysql sql select sql-delete

2
推荐指数
1
解决办法
6998
查看次数

在mysql中删除同一个表上有条件的行

我必须max(id)从表中删除一行MySQL.我正在使用查询::

 DELETE 
 FROM master 
 WHERE id=(
 SELECT MAX(id) 
 FROM master)
Run Code Online (Sandbox Code Playgroud)

但得到error No. 1093.

有人可以帮帮我吗?

mysql sql

2
推荐指数
1
解决办法
1586
查看次数

更新集=选择

我正在尝试使用以下命令根据选择查询更新表:

UPDATE branches SET name = 
(SELECT CONCAT(comp.name," ",bra.subsurb) as newname 
FROM companies comp 
RIGHT JOIN branches bra 
ON comp.id = bra.company_id)
Run Code Online (Sandbox Code Playgroud)

根据这个问题,这应该有效,但这会产生错误:You can't specify target table 'branches' for update in FROM clause

不确定我做错了什么。

编辑:

最终这个查询做了我想要的事情:

UPDATE branches bra LEFT JOIN companies comp ON comp.id = bra.company_id SET bra.name = CONCAT(comp.name," ",bra.subsurb)

mysql

2
推荐指数
1
解决办法
6510
查看次数

如何解决MySQL错误"您无法在FROM子句中指定目标表X进行更新"?

为什么这个查询不起作用?

DELETE FROM cancome WHERE user_id IN (
    SELECT user_id FROM cancome 
GROUP BY user_id
HAVING COUNT(user_id)>3 
  )
limit 3
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

[错误] 1093 - 您无法在FROM子句中为更新指定目标表'cancome'

mysql

2
推荐指数
1
解决办法
2万
查看次数

错误代码:1093。您无法在 FROM 子句中指定更新的目标表

假设我有一个产品表,并且只有 2 个字段;id 和购买日期。我想删除 2019 年购买的最后一个产品。我尝试使用以下查询来执行此操作:

DELETE FROM products
WHERE id = (SELECT id
            FROM products
            WHERE purchase_date LIKE '2019%'
            ORDER BY purchase_date DESC
            LIMIT 1);
Run Code Online (Sandbox Code Playgroud)

不幸的是,出现了标题中写的错误。我知道这个错误是一个已知错误,我已经尝试寻找解决方案。我已经查看了这里这里,但是,我无法理解如何更改我的查询以使其正常工作。

我将很高兴获得帮助和解释。提前致谢。

mysql sql sql-delete

2
推荐指数
1
解决办法
6036
查看次数

标签 统计

mysql ×10

sql ×6

sql-delete ×2

select ×1