0

在这里进退两难。。

我有一张桌子,我们称之为书架。该表具有以下字段:

[shelf_id,标题,latest_books]

然后我有一个带有字段的书籍表:

[book_id,shelf_id,标题,添加日期]

每本书都被分配到一个书架上。这就是我想做的...

对于每个书架,在书籍中查找分配给该书架的书籍,从这些书籍中获取 book_id 并将它们输入以逗号分隔的书架字段“latest_books”。为了使事情进一步复杂化(?)我只想要每个书架五个 book_id。如果这样更容易的话,我可以只用一个。.这是我可以用来手动执行此操作的查询:

update bookshelves
set latest_books = 
    (select book_id from books 
        where shelf_id = 1 
        order by date_added DESC 
        limit 0,1)
where shelf_id = 1;

书架和书桌都有数万条记录,所以..我可以一个一个地做,但我会一整年都在做。

我在 CentOS 上的 MySQL 工作。我很酷使用脚本或其他任何东西。

4

1 回答 1

0

好的,所以我想通了..它有助于在这里详细输入...

我将书架 ID 导出到 csv,然后将它们放入 bash 脚本中的数组中。

shelves=(
1
...
...
99999
)

for i in "${shelves[@]}"
do
        query='update bookshelves set latest_books = (select book_id from books where shelf_id = '$i' order by date_addet desc limit 0,1) where latest_books = "" and shelf_id = '$i' ;'
        mysql -uxxxx  -pxxx database_name -e "$query"

done

在测试数据库上运行脚本几次,看起来已经完成了我需要的操作。

于 2012-10-04T04:17:49.400 回答