使用子查询的方式找出属于Action分类的所有电影对应的title,description

本文介绍如何使用子查询从数据库中检索Action分类下的所有电影详细信息,包括电影的title和description。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

film表
字段说明
film_id电影id
title电影名称
description电影描述信息

CREATE TABLE IF NOT EXISTS film (
film_id smallint(5)  NOT NULL DEFAULT '0',
title varchar(255) NOT NULL,
description text,
PRIMARY KEY (film_id));
category表
字段说明
category_id电影分类id
name电影分类名称
last_update电影分类最后更新时间

CREATE TABLE category  (
category_id  tinyint(3)  NOT NULL ,
name  varchar(25) NOT NULL, `last_update` timestamp,
PRIMARY KEY ( category_id ));
film_category表
字段说明
film_id电影id
category_id电影分类id
last_update电影id和分类id对应关系的最后更新时间

CREATE TABLE film_category  (
film_id  smallint(5)  NOT NULL,
category_id  tinyint(3)  NOT NULL, `last_update` timestamp);

使用子查询的方式找出属于Action分类的所有电影对应的title,description

代码:

select f.title,f.description from film as f
where f.film_id in (
select fc.film_id from film_category as fc where fc.category_id in 
(select ff.category_id from category as ff where ff.name='Action'));
由于分类的名字为Action,所以把分类的查询放在最内层,总体为嵌套三层子查询
-- coding: utf-8 -- “”" @file: interlockledger @author: maxiaolong01 @date: 2025/7/7 16:10 “”" from typing import Annotated, Optional, List, Union from pydantic import BaseModel, Field, validator, field_validator from app.models.interlock.utils import InterLockType, ModuleType, LogLevelType class BaseInterLockLedger(BaseModel): alarm_name: Annotated[str | None, Field(alias=“alarmName”, title=“报警名称”, description=“报警名称”)] = None lock_type: Annotated[InterLockType | None, Field(alias=“lockType”, title=“互锁类型”)] = None product: Annotated[Optional[str], Field(alias=“product”, title=‘所属产品’, description=‘所属产品’)] = None module_name: Annotated[str| None, Field(alias=‘moduleName’, title=‘所属模块’, description=‘所属模块’)] = None module_type: Annotated[Union[str, List[str]]| None, Field( alias=‘moduleType’, title=‘模块类型’, description=“支持多个模块类型查询” )] = None dept_name: Annotated[ Optional[str] | None, Field(alias=‘deptName’, title=‘所属部门名称’, description=‘所属部门名称’)] = None trigger: Annotated[str | None, Field(alias=‘trigger’, title=‘触发器’, description=‘触发器’)] = None channel_number: Annotated[ Optional[str | int] | None, Field(alias=‘channelNumber’, title=‘渠道号’, description=‘渠道号’)] = None trigger_way: Annotated[str | None, Field(alias=‘triggerWay’, title=‘触发器渠道’, description=‘触发器渠道’)] = None alarm_desc: Annotated[str | None, Field(alias=‘alarmDesc’, title=‘报警描述’, description=‘报警描述’)] = None alarm_level: Annotated[LogLevelType, Field(alias=‘alarmLevel’, title=‘报警级别’, description=‘报警等级’)] = None alarm_detail: Annotated[str | None, Field(alias=‘alarmDetail’, title=‘报警详情’, description=‘报警详情’)] = None alarm_action: Annotated[str | None, Field(alias=‘alarmAction’, title=‘报警动作’, description=‘报警动作’)] = None alarm_channel: Annotated[ str | None, Field(alias=‘alarmChannel’, title=‘报警动作Data通道’, description=‘报警动作Data通道’)] = None alarm_action_desc: Annotated[ str | None, Field(alias=‘alarmActionDesc’, title=‘报警动作描述’, description=‘报警动作描述’)] = None condition: Annotated[str | None, Field(alias=‘condition’, title=‘满足条件’, description=‘满足条件’)] = None desc: Annotated[str | None, Field(alias=‘desc’, title=‘备注’, description=‘备注’)] = None class Config: populate_by_name = True extra = "allow" # 多值字段验证器 @field_validator('module_type', mode='after') def ensure_list_format(cls, v): """确保多值字段始终为列表格式""" if v is None: return None return [v] if not isinstance(v, list) else v class InterLockLedgerSearch(BaseInterLockLedger): current: Annotated[int | None, Field(title=“页码”)] = 1 size: Annotated[int | None, Field(title=“每页数量”)] = 10 order_list: Annotated[list[str] | None, Field( alias=‘orderList’, title=‘排序’)] = None class InterLockLedgerCreate(BaseInterLockLedger): … class InterLockLedgerUpdate(BaseInterLockLedger): … ValueError: [‘craft’] is not a valid ModuleType
最新发布
08-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值