我有一个页面显示公司名称及其详细信息来自表A. 现在说我有一家公司,它的名字是'Company_one'现在我想按字母顺序排序下一家公司和以前的公司及其详细信息等。
我的表中的数据没有排序。它在获取数据时存储。
那么现在应该写什么样的查询,它只提供一个前一个和一个下一个按字母顺序排序的记录? Plz帮助!!
答案 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的回答,您可以使用单个查询将其与WHERE
和OR
相结合,从而获得相同的结果。
例如:
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)
)
希望有所帮助。