MySQL:从文件关联重新排序行

标签 mysql

MySQL 照片库脚本要求我通过将每个图像标题与代表所需顺序的数字配对来提供图库的显示顺序。

<小时/>

我有一个名为 pairs_list.txt 的正确排序数据列表,如下所示:

#   title          correct data in list
--  -------
1   kmmal
2   bub14
3   ili2
4   sver2
5   ell5
6   ello1
...

因此,kimmals 图像将首先显示,然后是 bub14 图像,依此类推

<小时/>

我的名为 title_order 的 MySQL 表具有与上面相同的标题,但它们没有与正确的数字配对:

#   title          bad data in MySQL
--  -------
14  kmmal
100 bub14
31  ili2
47  sver2
32  ell5
1   ello1
...
<小时/>

如何制作一个 MySQL 脚本来查看 pairs_list.txt 中正确的数字-标题配对,并遍历 title_order 的每一行,将每一行替换为正确的数字?换句话说,如何使MySQL表的顺序看起来像文本文件的顺序?

在伪代码中,它可能看起来像这样:

  1. 获取 MySQL 行标题
  2. pair_list.txt 中搜索此标题
  3. 获取列表中正确的数字-标题对
  4. 将 MySQL 编号替换为正确的编号
  5. 对所有行重复此操作

感谢您的帮助!

最佳答案

如果这不是一次性任务而是会被频繁调用的函数,那么也许您可以遇到以下场景:

  1. 创建一个临时表,使用 mysql load data infile 将pairs_list.txt 中的所有值插入到该临时表中功能。
  2. 在该临时表上创建一个过程(或者可能是插入触发器?),它将根据插入的内容更新主表。
  3. 在该过程(或插入触发器)中,我将让游标从临时表中获取所有值,并针对该游标中的每个值更新主表上选定的标题。
  4. 从该临时表中删除所有内容

关于MySQL:从文件关联重新排序行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9883135/

相关文章:

mysql - 使用此 sql 搜索在 Rails 中构建复制关联

mysql - SQL查询困惑

MySQL查询删除表A中电子邮件与表B中匹配的记录

mysql - 从相关表中插入具有给定值和值的多行

MySQL 变量分区修剪

mysql查询统计uniqe字段而不丢失内容

mysql - phpmyadmin (mysql) 中列名的计数

mysql - 选择 SUM() 查询的 MAX()

mysql - 最新的 mysql 服务器应该使用什么版本的 mysql java 驱动程序

mysql - 谁能帮助我:"#1064 - You have an error in your SQL syntax;"