我有一个包含未排序行的表,并想让它们按列排序。我希望表格可以按列排序,因此我创建了一个 sort_by 列。
该表现在看起来像这样:
ID Data sort_by
-- ----- -------
27 Blahh 1
54 Blahh 2
57 Blahh 3
1 Blahh 4
现在我想在第二个位置插入一行(sort_by = 2)。然后我将不得不使用 sort_by += 1 更新所有 > 2 的行的 sort_by。如果我有几百万行,那就是很多更新。
那么,有没有一种规范的方法来做到这一点?当然,我可以在列之间设置更大的步骤并在间隙中插入新行等,但是有没有一种美观的方式,即不是黑客?
排序由用户手动完成。 google for = upvote 的一个好词,我尝试的所有方法都可以找到在某些 DBMS 或某些框架中对表进行排序的方法。 :)
最佳答案
没有人手动排序一百万行。 你这里有一个 classic XY Problem .
你在问:
How can I sort a million rows in an SQL database?
当你应该问:
How can I promote certain products in an online shop that is managed in a traditional Relational Database Management System?
前者需要一堆乱七八糟的解决方案,例如权重,或精度不断扩大的十进制列,或在数据库链表中。所有这些容易出错的都是违反直觉的,并且忽略了问题域。
你评论说:
Think products you want to present on the start page of a web shop - what the marketing team thinks will sell
那么,我想要在首页上展示什么样的产品?特色产品、在售产品、新品、即将脱销的产品……
-- Wacky featured items are random!
SELECT * FROM products WHERE featured = True ORDER BY RANDOM LIMIT 10;
-- More than 20% wow, thats a great deal!
SELECT * FROM products WHERE discount > 0.2 ORDER BY discount ASC LIMIT 10;
-- New stock, tell me about it!
SELECT * FROM products WHERE added_to_database < now()-24hours ORDER BY added_to_database LIMIT 10;
-- These items are about to disappear for ever, buy now!
SELECT * FROM products WHERE stock_number < 20 ORDER BY stock_number LIMIT 10;
想想你为什么要订购它们,而不是如何订购它们。通过这种方式,您可以根据某些标准获得一些,并且它可以更接近地模拟您正在工作的领域。
关于sql - 创建可按列排序的数据库表的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24295919/