sql去掉字段所有备注_SQL面试35

4d0fdc0628e97b28f19749d8a386f621.png

有两个表的表结构如下:

表ORDER(订单):
字段类型备注
IDInt主键
ORDER_NAMEVarchar订单名称

表ORDER_ITEM(订单项):

字段类型备注
ITEM_IDInt主键
ORDER_IDInt外键,关联ORDER表的主键
STATUSInt状态
0:失效
1:生效
Class_IDInt所属班级ID
CREATE TABLE `order` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ORDER_NAME` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

2ff92a9e92846400b80afbd57ffd11e8.png
CREATE TABLE `order_item` (
  `ITEM_ID` int(11) NOT NULL AUTO_INCREMENT,
  `ORDER_ID` int(11) DEFAULT NULL,
  `ITEM_NAME` varchar(255) DEFAULT NULL,
  `STATUS` int(255) DEFAULT NULL,
  PRIMARY KEY (`ITEM_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

39e3ad2cdd7d62e50c88b3b68b64e3a4.png

1、要求写一个SQL语句,查询出所有包含失效订单项的订单名称。

SELECT DISTINCT o.ORDER_NAME from `order` o 
LEFT JOIN order_item i
on o.id = i.order_id
WHERE STATUS = 0
;

d57613ef5b9cd518f519dfcaea13670d.png

2、要求写一个SQL语句,将所有包含失效订单项的订单名称后面都加(已删除)三个字。

UPDATE `order` 
set  order_name = CONCAT(order_name,"已删除")
where id in (
SELECT temp.ORDER_ID from
(SELECT DISTINCT i.ORDER_ID
from `order` o 
LEFT JOIN order_item i
on o.id = i.order_id
WHERE STATUS = 0)temp
);

e0f73e90db2a73c3739797460e4f010f.png
知识点

1、exists 子查询 或 in 子查询

2、concat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值