Mysql-如果同一表的其他行中不存在值,则更新行
我需要编写一个查询,如果同一个表中已经存在该值,它将更新行并跳过行。 i、 e.我只想在该队未参加同一事件(eventID)的游戏时,将该队更新到游戏 这是一个问题Mysql-如果同一表的其他行中不存在值,则更新行,mysql,Mysql,我需要编写一个查询,如果同一个表中已经存在该值,它将更新行并跳过行。 i、 e.我只想在该队未参加同一事件(eventID)的游戏时,将该队更新到游戏 这是一个问题 update tbl_games m INNER JOIN bcs_event e on e.id = m.eventID SET m.team_id=1; 我在where语句中尝试了以下两种解决方案 WHERE(NOT EXISTS(select m1.id from tbl_games as m1 where m1.even
update tbl_games m INNER JOIN bcs_event e on e.id = m.eventID SET m.team_id=1;
我在where语句中尝试了以下两种解决方案
WHERE(NOT EXISTS(select m1.id from tbl_games as m1 where m1.eventID=e.id and m1.team_id=1 ))
这表示“不能在FROM子句中为update指定目标表'm'”
这表示“where子句”中的未知列“e.id”
以下是示例数据
CREATE TABLE bcs_event (
`id` INT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
CREATE TABLE tbl_games (
`id` INT NOT NULL AUTO_INCREMENT,
`event_id` INT NULL,
`team_id` INT NULL,
PRIMARY KEY (`id`),
INDEX `evid_idx` (`event_id` ASC),
CONSTRAINT `evid`
FOREIGN KEY (`event_id`)
REFERENCES bcs_event (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
INSERT INTO bcs_event (`Name`) VALUES ('Softball Event');
INSERT INTO bcs_event (`Name`) VALUES ('Baseball Event');
INSERT INTO bcs_event (`Name`) VALUES ('Soccer Event');
INSERT INTO tbl_games (`event_id`, `team_id`) VALUES ('1', '11');
INSERT INTO tbl_games (`event_id`, `team_id`) VALUES ('1', '22');
INSERT INTO tbl_games (`event_id`) VALUES ('1');
INSERT INTO tbl_games (`event_id`) VALUES ('1');
update tbl_games m INNER JOIN bcs_event e on e.id = m.event_id SET m.team_id=11
where m.team_id is NULL and (NOT EXISTS(select g.id from tbl_games as g where g.eventID=e.id and g.team_id=11));
试试这个:
✓
dbfiddle试试这个:
✓
dbfiddle你能提供样本数据和预期输出吗?@Simonare我在postcan中添加了样本数据。你能提供样本数据和预期输出吗?@Simonare我在Post中添加了样本数据。事实上,我需要bcs_事件与tbl_游戏结合,以访问事件表中的更多信息。这就是为什么不能从JOINYes中删除事件表的原因,我以前也尝试过。这是说“where子句”中的未知列“e.id”,请查看主帖子。。我已经添加了示例数据,实际上我需要bcs_事件与tbl_游戏结合,以访问事件表中的更多信息。这就是为什么不能从JOINYes中删除事件表的原因,我以前也尝试过。这是说“where子句”中的未知列“e.id”,请查看主帖子。。我添加了示例数据
CREATE TABLE bcs_event (
`id` INT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
CREATE TABLE tbl_games (
`id` INT NOT NULL AUTO_INCREMENT,
`event_id` INT NULL,
`team_id` INT NULL,
PRIMARY KEY (`id`),
INDEX `evid_idx` (`event_id` ASC),
CONSTRAINT `evid`
FOREIGN KEY (`event_id`)
REFERENCES bcs_event (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
INSERT INTO bcs_event (`Name`) VALUES ('Softball Event');
INSERT INTO bcs_event (`Name`) VALUES ('Baseball Event');
INSERT INTO bcs_event (`Name`) VALUES ('Soccer Event');
INSERT INTO tbl_games (`event_id`, `team_id`) VALUES ('1', '11');
INSERT INTO tbl_games (`event_id`, `team_id`) VALUES ('1', '22');
INSERT INTO tbl_games (`event_id`) VALUES ('1');
INSERT INTO tbl_games (`event_id`) VALUES ('1');
update tbl_games m INNER JOIN bcs_event e on e.id = m.event_id SET m.team_id=11
where m.team_id is NULL and (NOT EXISTS(select g.id from tbl_games as g where g.eventID=e.id and g.team_id=11));
CREATE TABLE bcs_event (
`id` INT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
✓
CREATE TABLE tbl_games (
`id` INT NOT NULL AUTO_INCREMENT,
`event_id` INT NULL,
`team_id` INT NULL,
PRIMARY KEY (`id`),
INDEX `evid_idx` (`event_id` ASC),
CONSTRAINT `evid`
FOREIGN KEY (`event_id`)
REFERENCES bcs_event (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
✓
INSERT INTO bcs_event (`Name`) VALUES ('Softball Event');
INSERT INTO bcs_event (`Name`) VALUES ('Baseball Event');
INSERT INTO bcs_event (`Name`) VALUES ('Soccer Event');
INSERT INTO tbl_games (`event_id`, `team_id`) VALUES ('1', '11');
INSERT INTO tbl_games (`event_id`, `team_id`) VALUES ('1', '22');
INSERT INTO tbl_games (`event_id`) VALUES ('1');
INSERT INTO tbl_games (`event_id`) VALUES ('1');
✓
update tbl_games m
INNER JOIN bcs_event e
on e.id = m.event_id
SET m.team_id=11
where m.team_id is NULL and
NOT EXISTS (
select l.id
from (select g.id from tbl_games as g
where g.event_id=(SELECT e.id
FROM bcs_event e
WHERE e.id = g.event_id) and g.team_id=11) l
);
✓