Files
his/openhis-server-new/sql/update_pricing_flag_to_one.sql

124 lines
3.3 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================
-- 将 wor_activity_definition 表中的一两条记录的 pricing_flag 改成 '1'
-- 注意pricing_flag 是 char(1) 类型,所以要用字符串 '1'
-- ============================================
-- 方式1更新前两条 pricing_flag = '0' 的记录(推荐)
UPDATE wor_activity_definition
SET pricing_flag = '1',
update_time = CURRENT_TIMESTAMP
WHERE id IN (
SELECT id
FROM wor_activity_definition
WHERE delete_flag = '0'
AND pricing_flag = '0'
AND status_enum = 1 -- 只更新激活状态的项目
ORDER BY id
LIMIT 2
);
-- 方式2更新指定 ID 的记录(更精确,推荐使用)
-- 请将下面的 ID 替换为实际要更新的记录 ID
UPDATE wor_activity_definition
SET pricing_flag = '1',
update_time = CURRENT_TIMESTAMP
WHERE id IN (1906532604116348929, 1906544768434053121) -- 替换为实际的 ID
AND delete_flag = '0';
-- 方式3更新前两条记录不管当前 pricing_flag 值是什么)
UPDATE wor_activity_definition
SET pricing_flag = '1',
update_time = CURRENT_TIMESTAMP
WHERE id IN (
SELECT id
FROM wor_activity_definition
WHERE delete_flag = '0'
AND status_enum = 1
ORDER BY id
LIMIT 2
);
-- 方式4更新有费用定价但 pricing_flag = '0' 的前两条记录(业务逻辑更合理)
UPDATE wor_activity_definition
SET pricing_flag = '1',
update_time = CURRENT_TIMESTAMP
WHERE id IN (
SELECT wad.id
FROM wor_activity_definition wad
INNER JOIN adm_charge_item_definition acid
ON acid.instance_id = wad.id
AND acid.delete_flag = '0'
AND acid.status_enum = 1
AND acid.instance_table = 'wor_activity_definition'
WHERE wad.delete_flag = '0'
AND wad.status_enum = 1
AND wad.pricing_flag = '0'
ORDER BY wad.id
LIMIT 2
);
-- ============================================
-- 执行前可以先查询要更新的记录(验证用)
-- ============================================
-- 查询前两条 pricing_flag = '0' 的记录
SELECT
id,
bus_no,
name AS activity_name,
pricing_flag,
status_enum,
create_time,
update_time
FROM wor_activity_definition
WHERE delete_flag = '0'
AND pricing_flag = '0'
AND status_enum = 1
ORDER BY id
LIMIT 2;
-- 查询有费用定价但 pricing_flag = '0' 的记录
SELECT
wad.id,
wad.bus_no,
wad.name AS activity_name,
wad.pricing_flag,
acid.charge_name,
acid.price
FROM wor_activity_definition wad
INNER JOIN adm_charge_item_definition acid
ON acid.instance_id = wad.id
AND acid.delete_flag = '0'
AND acid.status_enum = 1
AND acid.instance_table = 'wor_activity_definition'
WHERE wad.delete_flag = '0'
AND wad.status_enum = 1
AND wad.pricing_flag = '0'
ORDER BY wad.id
LIMIT 2;
-- ============================================
-- 执行后验证更新结果
-- ============================================
-- 验证更新是否成功
SELECT
id,
bus_no,
name AS activity_name,
pricing_flag,
update_time
FROM wor_activity_definition
WHERE id IN (
-- 这里放刚才更新的 ID或者用子查询
SELECT id
FROM wor_activity_definition
WHERE delete_flag = '0'
AND pricing_flag = '1'
AND status_enum = 1
ORDER BY update_time DESC
LIMIT 2
);