如何按字母顺序获取next和prev记录的最小记录?

时间:2010-03-05 11:47:17

标签: sorting mysql alphabetical

我有一个页面显示公司名称及其详细信息来自表A.  现在说我有一家公司,它的名字是'Company_one'现在我想按字母顺序排序下一家公司和以前的公司及其详细信息等。

我的表中的数据没有排序。它在获取数据时存储。

那么现在应该写什么样的查询,它只提供一个前一个和一个下一个按字母顺序排序的记录? Plz帮助!!

3 个答案:

答案 0 :(得分:7)

在单个查询中没有很好的方法可以做到这一点。只做两个查询。

获取前一个:

SELECT * FROM companies
WHERE name < variable_with_current_name
ORDER BY name DESC
LIMIT 1

要获得下一个:

SELECT * FROM companies
WHERE name > variable_with_current_name
ORDER BY name ASC
LIMIT 1

答案 1 :(得分:0)

您需要使用 sort clause 对表格进行排序。 sort的原型是:

sort by fieldname

示例查询:

select * from your_table sort by company asc

如果要限制记录,请使用limit子句:

select * from your_table sort by company asc limit 0, 1

答案 2 :(得分:0)

根据Dominic的回答,您可以使用单个查询将其与WHEREOR相结合,从而获得相同的结果。

例如:

SELECT * FROM `companies`
WHERE (
    `name` = IFNULL(
        (SELECT `name` FROM `companies` 
            WHERE `name` < 'variable_with_current_name'
            ORDER BY `name` DESC
            LIMIT 1)
        , 0)
OR
    `name` = IFNULL(
        (SELECT `name` FROM `companies` 
            WHERE `name` > 'variable_with_current_name'
            ORDER BY `name` ASC
            LIMIT 1)
        , 0)
) 

希望有所帮助。

相关问题