【问题标题】:Implicit MySQL Join on Update Statement - 0 rows affected更新语句上的隐式 MySQL 连接 - 0 行受影响
【发布时间】:2016-02-09 04:21:49
【问题描述】:

我正在尝试让这个 MySQL 代码工作,但它说 0 行受到影响。

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

基本上我有 assesment_typesiddescription 列,我只有 id 在 assessments.assessment_type_id

我需要更新 id

我搜索并找不到我需要的东西。

谢谢!

表格数据: assessment_types 标识说明 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 ;

【问题讨论】:

  • 请贴出您的相关表结构代码。
  • 具体来说,告诉我们如何在两个表之间进行显式连接。
  • 请张贴create table codeassessmentsassessment_types 表。 @凯尔
  • 我猜assessment_types.idPRIMARY 键。然后试试这个查询UPDATE assessments SET assessments.assessment_type_id = (SELECT assessment_types.id FROM assessment_types WHERE assessment_types.description="Skills Assessment") WHERE assessments.id = 2;
  • 这成功了!谢谢

标签: php mysql sql join inner-join


【解决方案1】:

您可以尝试在 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 行受到影响,但是 Subrata Dey Pappu 的回答有效。
  • 你的匹配和更新条件是一样的..你怎么能期望查询更新期望结果?
猜你喜欢
  • 2016-09-24
  • 1970-01-01
  • 2016-01-19
  • 2020-01-29
  • 1970-01-01
  • 2021-05-06
  • 2014-06-02
  • 2011-12-16
  • 1970-01-01
相关资源
最近更新 更多