2016-02-09 30 views
0

我试图让这个MySQL代码工作,但它说0行受到影响。隐式MySQL加入更新声明 - 0行受影响

UPDATE assessments, assessment_types 
SET assessments.assessment_type_id = assessment_types.id 
WHERE (assessment_types.description = "Skills Assessment" AND assessments.id = 2); 

基本上我有assessment_typesID描述列,我只是有IDassessments.assessment_type_id

我需要更新ID

我搜索,找不到我需要这个。

谢谢!

表数据: assessment_types ID描述 1层知识评估 2技能评估 3个人信息 4自然技能

表结构:

-- 
-- Table structure for table `assessments` 
-- 

CREATE TABLE IF NOT EXISTS `assessments` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) COLLATE utf8_bin NOT NULL, 
    `acronym` varchar(255) COLLATE utf8_bin NOT NULL, 
    `assessment_type_id` int(11) NOT NULL, 
    `language_id` int(11) NOT NULL, 
    `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `date_updated` date NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`), 
    KEY `assessment_type_id` (`assessment_type_id`), 
    KEY `language_id` (`language_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2385 ; 

-- 
-- Table structure for table `assessment_types` 
-- 

CREATE TABLE IF NOT EXISTS `assessment_types` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `description` varchar(255) CHARACTER SET latin1 NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=7 ; 
+1

发表您的相关表格结构代码,请。 – 1000111

+1

具体来说,告诉我们如何在两个表之间执行_explicit_ join。 –

+0

请发表'评估“和”评估类型“表的'创建表代码'。 @Kell – 1000111

回答

0

你可以尝试做你UPDATE声明两个表的显式连接:

UPDATE assessments a 
INNER JOIN assessment_types at 
    ON a.assessment_type_id = at.id 
SET a.assessment_type_id = at.id 
WHERE (at.description = "Skills Assessment" AND a.id = 2); 
+0

这给了0行,但Subrata Dey Pappu的答案奏效。 – Kell

+1

您的匹配和更新条件是相同的。您如何期望查询更新期望结果? –