Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql 两表关联更新

作者:只言片語中   发布日期:2025-09-18   浏览:40

-- 示例代码:MySQL 两表关联更新

-- 假设有两个表:orders 和 customers
-- orders 表包含订单信息,customers 表包含客户信息
-- 我们想根据 customers 表中的客户等级更新 orders 表中的折扣信息

-- 创建示例表
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(100),
    customer_level VARCHAR(50)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_amount DECIMAL(10, 2),
    discount DECIMAL(5, 2)
);

-- 插入示例数据
INSERT INTO customers (customer_id, customer_name, customer_level) VALUES
(1, 'Alice', 'VIP'),
(2, 'Bob', 'Regular');

INSERT INTO orders (order_id, customer_id, order_amount, discount) VALUES
(101, 1, 200.00, 0.00),
(102, 2, 150.00, 0.00);

-- 更新 orders 表中的折扣信息,基于 customers 表中的客户等级
UPDATE orders o
JOIN customers c ON o.customer_id = c.customer_id
SET o.discount = CASE 
    WHEN c.customer_level = 'VIP' THEN 0.10 -- VIP 客户享受 10% 折扣
    WHEN c.customer_level = 'Regular' THEN 0.05 -- 普通客户享受 5% 折扣
    ELSE 0.00
END;

-- 查询更新后的结果
SELECT * FROM orders;

解释说明:

  1. 创建表和插入数据:首先创建了 customersorders 两个表,并插入了一些示例数据。
  2. 关联更新:使用 UPDATE 语句结合 JOIN 关键字,将 orders 表与 customers 表进行关联。通过 CASE 语句根据客户的等级(customer_level)设置不同的折扣(discount)。
  3. 查询结果:最后查询 orders 表,验证更新是否成功。

上一篇:mysql 关联删除

下一篇:mysql 时间戳格式化

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

unsigned在mysql中是什么意思

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站