2012-08-22 82 views
0

困境:我有一张有几百行的表格。我想提交一个具有特定搜索项的mysql_query,其中查询将查找该列在字段中按字母顺序排列的位置,然后在放置前返回n行,并在放置后返回n行。按字母顺序排列搜索词前后选择n行

例子:想象一下,我有如下内容(我把它放在水平的空间,而是为了便于讨论,我们假设这是列值的垂直列表)列:

|apple|asus|adder|billy|cat|dog|zebra|computer|mouse|cookie|donkey| 

如果我是运行在长期courage查询,假设N = 3,我想有它的顺序返回以下行:

|cat|computer|cookie|dog|donkey|mouse| 

按字母顺序,字courage会在这些结果的中间着陆,我们遇到了前面的3个条目和以下3个条目。

语言备注:我使用的是php和mysql。我没有任何代码可以显示,因为我不确定这是否需要在where子句中,或者它需要子查询,还是需要在PHP中将这些变量交给查询之前,使用PHP中的变量进行操作。

回答

2

你可能会尝试两个选择的联盟。或者手动完成。

SELECT term FROM table WHERE term < 'courage' ORDER BY term DESC LIMIT 3; 

将返回饼干,电脑和猫(降序)。

然后 SELECT term从表WHERE term> ='courage'ORDER BY term ASC LIMIT 3;

将返回狗,驴和鼠标。

在PHP中,你得到两组,反转第一个和加入。

公司全资SQL解决方案可能是

SELECT term FROM (
    SELECT term FROM table WHERE term < 'courage' ORDER BY term DESC LIMIT 3) 
    UNION 
    SELECT term FROM table WHERE term >= 'courage' ORDER BY term ASC LIMIT 3) 
) ORDER BY term; 
+0

谢谢你,先生。那就是诀窍。 –

相关问题