gpt4 book ai didi

mysql - Zend Db 按自定义列表排序

转载 作者:行者123 更新时间:2023-11-29 05:37:43 24 4
gpt4 key购买 nike

我想使用 Zend Db 在自定义列表中对我的数据库的某些行进行排序。

它们有 page_type 字段,可以是 0、1、2 或 3,我希望它们按以下顺序排列:1,3,2,0

我发现 MySQL 是可行的:

SELECT id 
FROM table
WHERE id IN (15,21,4,8)
ORDER BY id = 15 DESC, id = 21 DESC, id = 4 DESC, id = 8 DESC

是否也可以使用 Zend Db 还是我应该在这里使用普通的 MySQL?

现在这是我的代码:

$select = $this->select()
->order(array(
'asc' => 'page_type'
));

最佳答案

可以将page_type 改为ENUM('1','3','2','0')(注意顺序)。在内部,MySQL 会将索引 0 链接到值 1,将索引 1 链接到值 3,等等。

如果您随后按 page_type ASC 排序,它将按您希望的顺序排序,因为它按 ENUM 键而不是每个键相关的实际文本排序。

根据 page_type 实际链接到的内容,您始终可以使用文本描述符代替,即 ENUM('news','something else',.....) - 您没有提供有关链接内容的信息,因此无法提供建议进一步。

可以在此处找到有关枚举的更多信息:http://dev.mysql.com/doc/refman/5.0/en/enum.html (向下滚动到段落开始的位置“ENUM values are sorted according to”....

唯一的缺点是每次添加新的 page_type 时都需要更新表架构,但是我认为由于字段名称,这不会常见,所以这可能是一个可行的选择

关于mysql - Zend Db 按自定义列表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com