Php MySQL查询拉取项目,但始终在顶部显示某个项目

Php MySQL查询拉取项目,但始终在顶部显示某个项目,php,mysql,Php,Mysql,我有一个数据库,当项目被输入时,它们会被分配一个部分,如“书籍”、“DVD”、“海报”、“配件”、“衣服”等,所以每个项目都有一个固定的部分 下面是我用来查找唯一部分的SQL查询,以便我们可以使用它们按部分组织项目 SELECT DISTINCT section FROM merch 这给了我正确的结果,将唯一的部分放入一个数组中。现在,我希望始终首先列出两个部分。所以我总是想先看“海报”和“书”,然后再看其他类别 有没有办法调整上面的查询,以便先显示这两个部分,然后在下面显示剩余的唯一类别?

我有一个数据库,当项目被输入时,它们会被分配一个部分,如“书籍”、“DVD”、“海报”、“配件”、“衣服”等,所以每个项目都有一个固定的部分

下面是我用来查找唯一部分的SQL查询,以便我们可以使用它们按部分组织项目

SELECT DISTINCT section FROM merch
这给了我正确的结果,将唯一的部分放入一个数组中。现在,我希望始终首先列出两个部分。所以我总是想先看“海报”和“书”,然后再看其他类别

有没有办法调整上面的查询,以便先显示这两个部分,然后在下面显示剩余的唯一类别?

这应该可以

SELECT DISTINCT `section`
           FROM `merch`
       ORDER BY FIELD(`name`, 'posters', 'books');

你可以用几种方法来做

如果节中有动态数据,最简单的可能是union语句,如

SELECT * FROM section WHERE id = 'books'
    UNION
SELECT * FROM section WHERE id = 'posters'
    UNION
SELECT * FROM section WHERE id IN (SELECT DISTINCT section_id 
                                      FROM merch 
                                      AND section_id not in ('books','posters'))

在我的应用程序中执行此操作时,我使用了
ORDER BY FIELD()
函数,请参见下文

SELECT * FROM merch ORDER BY FIELD(section,'posters','books','dvds','accessories')

谢谢你和Ryan都有同样的反应。但是需要“DESC”,以便我想要的字段列在顶部。@scatteredbomb:
按字段排序(section,'posters','books')DESC,section ASC
,首先显示
书籍,然后显示
海报
,然后其他部分按ASC排序。
SELECT * FROM merch ORDER BY FIELD(section,'posters','books','dvds','accessories')