隐式MySQL加入更新语句 - 受影响的行数为

时间:2016-02-09 04:21:49

标签: php mysql sql join inner-join

我试图让这个 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_types 包含 id 描述列,我只有 id 强> assessments.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 个答案:

答案 0 :(得分: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);