【发布时间】:2010-01-05 08:47:14
【问题描述】:
我有两个 MySql 表,如下所示,数据显示:
CREATE TABLE `A` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`status` varchar(50) DEFAULT NULL,
`another_field` varchar(50) DEFAULT NULL
)
INSERT INTO `A` VALUES ('1', null, 'a');
INSERT INTO `A` VALUES ('2', null, 'b');
INSERT INTO `A` VALUES ('3', null, 'c');
CREATE TABLE `B` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`status` varchar(50) DEFAULT NULL,
`tableA_id` int(12) DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `B` VALUES ('1', 'aa', '1');
INSERT INTO `B` VALUES ('2', 'aa', '1');
INSERT INTO `B` VALUES ('3', 'aa', '2');
INSERT INTO `B` VALUES ('4', 'aa', '3');
INSERT INTO `B` VALUES ('5', 'bb', '3');
我想知道当 A.id = B.tableA_id 使用单个查询时,如果所有 B.status 都相同,是否可以更新 A.status?
这就是我希望我的表 A 的样子:
('1', 'aa', 'a') - 状态更新为 'aa' 因为 B.id 1 和 2 具有相同的状态和相同的 B.tableA_id 值。
('2', 'aa', 'b') - 状态更新为 'aa',因为 B.id 3 具有相同的状态。
('3', null, 'c') - 这不会更新,因为 B.id 4 和 5 具有不同的状态和相同的 table2.table1_id 值。
谢谢
【问题讨论】:
-
您的查询中缺少几个分号和表 a 上的主键定义
-
感谢指点..请忽略SQL语句中的任何语法错误。
-
bzabhi,Anax 是对的。由于缺少 PRIMARY KEY 子句(AUTO_INCREMENT 必须具有该子句),因此表定义也不会在 MySQL 上运行。下次请检查您的脚本,让帮助更愉快。