MySQL:按第二列排序(如果非空),同时保持第一列的顺序

显然,在MySQL中,按第二个非空列排序并保留第一列的顺序取决于子查询+COALESCE函数。

开发中,要点如下: 首先使用子查询(m2 )从媒体表中选择每个series_id中series_order最小的记录,并以其标题作为系列分组的基础。
例如,系列 A 有电影 1 (顺序=1 )和电影 2 (顺序=2 )。
子查询返回 order=1 作为系列名称的记录标题。
然后主查询m1 通过LEFT JOIN关联子查询的结果,并使用COALESCE(m2 .title, m1 .title)作为排序字段——如果电影属于系列(m2 .title不为空),则按系列名称排序;否则,它们是按电影标题本身组织的。
这个函数非常酷,它返回第一个非 NULL 值。
最后排序时,先按COALESCE结果排序,再按m1 .series_order分组排序。
去年我们运行了这个项目,我们使用了 3 000 个级别的数据,结果在几秒钟内就可用了。
然而,我们后来发现,如果序列全部为 NULL,那么序列将是不规则的。
说实话,有点混乱。

一开始我以为直接用CASE WHEN会更直观,后来发现子查询+COALESCE效率更高,写法也更通用。
等等,还有一件事。
当连续剧的标题和电影的标题同名时,可能会发生一些事情。
最好添加一个唯一的标识符来区分它们。

给我一个建议:index_serial id和series_order的组合,特别是对于大数据集,可以节省大量时间。

MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL 数据库中文指南

哈,MySQL Workbench确实是一个管理MySQL数据库的好工具。
在我们聊天时,让我分解一下本教程的关键步骤。

1 .下载并安装MySQL Workbench 1 .访问MySQL官网下载页面。
2 . 根据您的操作系统选择合适的版本进行下载。
3 .下载完成后,按照提示进行安装。

2 .远程连接数据库 1 . 确保服务器支持SSH登录和远程连接。
2 、在Workbench中配置远程登录信息。
3 、按照说明配置完成后,点击配置好的门禁卡的连接。

3 .操作数据库 1 . 登录后,您将看到数据库列表。
2 . 创建数据库:右键单击空白处,选择“创建架构”。
3 . 创建表:右键单击数据库,选择“创建表”。
4 . 查看表数据:单击表名称旁边的闪电符号以执行查询。
5 . 输入数据:在表中添加信息并按“应用”。
6 . 更改字段属性:右键单击表名称并选择“更改表”。
7 . 删除表:右键单击表名称并选择“删除表”。

4 .数据导入导出 1 . 导入:文件 -> 运行 SQL 脚本。
2 . 导出:右键单击数据库或表,选择导出数据。

5 .配置表属性 1 . PRIMARY KEY、FOREIGN KEY、UNIQUE CONSTRAINT、NOT NULL CONSTRAINT、DEFAULT VALUE CONSTRAINT:在创建或修改表时设置。

6 .执行SQL查询 1 . 在 SQL 编辑器中输入 SQL 语句。
2 . 单击执行按钮。

7 . 创建触发器 1 . 在导航器中,找到架构,然后找到触发器。
2 . 创建和管理触发器。

8 . 用户帐户和访问权限 1 . 查看帐户:导航器 -> 管理 -> 用户和权限。
2 . 创建帐户:按照提示操作。
这基本上就是 MySQL Workbench 的基本功能。
但在实际操作中,可能会遇到各种各样的问题,比如通讯失败、命令执行错误等,这时候就需要具体问题具体分析了。
无论如何,你应该知道。
尝试几次后总能找到解决方案。
我还在思考这个问题。
如果您有更具体的问题,请随时问我。

mysql必填字段设置

mysql 两个字段不能同时为空的设置