mysql - 选择和子选择 UPDATE Mysql 案例学科 x 技术
问题描述
我有以下情况:我的表格“disciplines_units_technicians”包含以下列:
- 纪律ID;
- unit_id;
- 技术_id;
最初有两个单元,然后添加了第三个单元,这导致“UNITS X TECHNICAL”链接出现问题
我需要帮助进行以下更新:
首先我选择表:
从学科_单位_技术人员那里选择学科_id?
我想选择 unit_id = 1、2 和 3 的返回(1、2 和 3 的重复行),并从这个返回中进行 UPDATE 在学科 ID 寄存器中:
更新学科_单位_技术人员 SET unit_id = '0' where unit_id = '2'
地点:
更新学科_单位_技术人员 SET unit_id = '2' where unit_id = '3'
只有在表中有 3 条记录的“discipline_id”id 中,即它们包括 unit = 1、2 和 3,但我不知道在这种情况下如何进行选择和子选择以进行更新,请执行不 CONTEMPLATE 纪律 ID 仅在 unit = 1 和 2 的情况下重复返回,仅当在学科 ID 的返回中有一个 unit = 3 时。
示例,只需选择具有单位 1、2 和 3 的返回并进行必要的 pos 更新
解决方案
我认为这可以满足您的要求:
update disciplines_units_technicians dut
inner join (
select discipline_id
from disciplines_units_technicians
where unit_id in (1, 2, 3)
group by discipline_id
having count(*) = 3
) dut1 on dut1.discipline_id = dut.discipline_id
set dut.unit_id = case when dut.unit_id = 2 then 0 else 2 end
where dut.unit_id in (2, 3)
基本上,这会过滤表discipline_id
中包含所有 3 个unit_id
s(1、2 和 3)的 s,并将unit_id
2 更新为 0,将 3 更新为 2。
推荐阅读
- sql - SQL Server - 计算销售概览的每周目标值与实际值
- python - 通过shell脚本.bat文件自动连接到oracle的python脚本时出错
- r - 将长格式转换为宽格式
- java - 需要创建模拟参数以使用 app.run 创建环境对象
- excel - 将其他数据行粘贴到 Excel 表中时,公式和格式不应用于新行
- mysql - 按日期拆分数据库
- python - 根据条件向多索引数据框添加新列
- c# - Xamarin 表单、DataTemplate 与自定义渲染器
- spring-boot - 如何将布尔数据库值映射到 Java 枚举
- php - 这个功能是安全的还是更安全,如果是的话如何