Mysql 在子查询中插入值

Mysql 在子查询中插入值,mysql,sql,Mysql,Sql,我试图将值“1”插入子查询每个结果的“isTransfer”列中,但它不起作用。这是我选择行的查询: select r.* from players r inner join ( select name, rating, max(id) id from players group by name, rating having count(distinct club) > 1 ) q on r.name = q.name and r.rating = q

我试图将值“1”插入子查询每个结果的“isTransfer”列中,但它不起作用。这是我选择行的查询:

select r.* 
from players r 
inner join ( 
   select name, rating, max(id) id 
   from players group by name, rating 
   having count(distinct club) > 1 
   ) 
q on r.name = q.name and r.rating = q.rating and r.id = q.id
这就是我想做的:

INSERT INTO 'isTransfer' VALUES '1' WHERE
(select r.* 
    from players r 
    inner join ( 
       select name, rating, max(id) id 
       from players group by name, rating 
       having count(distinct club) > 1 
       ) 
    q on r.name = q.name and r.rating = q.rating and r.id = q.id)

对于此任务,您需要执行更新查询。此外,您不能像那样使用WHERE子句,您将得到一个错误。相反,更改where子句以查看子查询返回主键的位置。它看起来像这样:

UPDATE myTable
SET isTransfer = 1
WHERE primaryKey IN [mySubquery];
SELECT DISTINCT id
FROM(
   SELECT name, rating, MAX(id) AS id
   FROM players
   GROUP BY name, rating
   HAVING COUNT(DISTINCT club) > 1) q
您需要确保子查询的SELECT中的唯一列是主键,否则将出现无效的操作数计数错误

关于您在评论中的查询,不需要加入。相反,只需从子查询中获取不同的id值,如下所示:

UPDATE myTable
SET isTransfer = 1
WHERE primaryKey IN [mySubquery];
SELECT DISTINCT id
FROM(
   SELECT name, rating, MAX(id) AS id
   FROM players
   GROUP BY name, rating
   HAVING COUNT(DISTINCT club) > 1) q

然后,将该查询作为输入操作数。

对于此任务,需要执行更新查询。此外,您不能像那样使用WHERE子句,您将得到一个错误。相反,更改where子句以查看子查询返回主键的位置。它看起来像这样:

UPDATE myTable
SET isTransfer = 1
WHERE primaryKey IN [mySubquery];
SELECT DISTINCT id
FROM(
   SELECT name, rating, MAX(id) AS id
   FROM players
   GROUP BY name, rating
   HAVING COUNT(DISTINCT club) > 1) q
您需要确保子查询的SELECT中的唯一列是主键,否则将出现无效的操作数计数错误

关于您在评论中的查询,不需要加入。相反,只需从子查询中获取不同的id值,如下所示:

UPDATE myTable
SET isTransfer = 1
WHERE primaryKey IN [mySubquery];
SELECT DISTINCT id
FROM(
   SELECT name, rating, MAX(id) AS id
   FROM players
   GROUP BY name, rating
   HAVING COUNT(DISTINCT club) > 1) q

然后,将该查询作为您的输入操作数。

假设id在players表中是唯一的:

update players r inner join
       (select name, rating, max(id) as id 
        from players p
        group by name, rating 
        having count(distinct club) > 1 
       ) nr
       on r.id = nr.id
    set isTransfer = 1;

假设id在players表中是唯一的:

update players r inner join
       (select name, rating, max(id) as id 
        from players p
        group by name, rating 
        having count(distinct club) > 1 
       ) nr
       on r.id = nr.id
    set isTransfer = 1;

我想你是在找更新而不是插入我想你是在找更新而不是插入谢谢你的快速回复!我试过这样做:更新玩家集isTransfer=1,其中id在select r.id from players r internal join select name,rating,maxid id from players group by name,评级在r.name=q.name和r.rating=q.rating和r.id=q.id上的countdistinct club>1 q,但上面写着:1093-您不能在FROM子句中指定要更新的目标表'players',感谢您的快速回复!我尝试了这样的方法:更新玩家集isTransfer=1,其中id在select r.id from players r inner join select name,rating,maxid id from players group by name,rating在r.name=q.name和r.rating=q.rating和r.id=q.id上具有countdistinct club>1 q的评级,但它显示:1093-您不能在from子句中指定更新的目标表'players'