2013-02-13 60 views
1

我有一个名为'user'的表,它具有名为'id','name'的字段。基于字母组a-z选择三个值a-z

我需要从每个字母中选择三个名字并显示一个页面,所以总的结果将是26 * 3 = 78

我已经做到了这一点使用PHP,我需要优化的查询,我们能在单个查询中完成此操作?

+0

我已经写了手动查询与PHP的帮助。即26查询 – 2013-02-13 05:39:06

+2

是的,它可以完成,张贴您已经尝试过的查询 – Minesh 2013-02-13 06:01:03

回答

1

请有这一个尝试:

SELECT alphabet, name FROM (
SELECT 
LEFT(name, 1) AS alphabet, 
name, 
@num := IF(@prev = LEFT(name, 1), @num + 1, 1) AS row_num, 
@prev := LEFT(name, 1) as previous 
FROM yourTable, (SELECT @num:=0, @prev:='') v 
ORDER BY name 
) sq 
WHERE row_num <= 3 
+0

感谢您的答复。但它返回一个空的结果。 – 2013-02-13 10:16:42

+0

你确定吗?你的表中有(测试)数据吗?在这个查询中,没有限制数据的内容,所以不管它是对还是错,都应该有一些结果。 – fancyPants 2013-02-13 10:27:30

+0

是的,我确定,表中有大约2500行数据。但它没有显示任何结果 – 2013-02-13 12:41:43

1

尝试使用
SELECT * FROM user WHERE name LIKE 'a%' LIMIT 0,3

我不知道,如果这是你问。 Lemme知道它是否解决了! :)

+0

我已经使用这26次的每个字母,SELECT * FROM用户WHERE名称LIKE'a%'限制0,3,我需要找到一种方法在单个查询中执行此操作。 – 2013-02-13 08:32:46

+0

哦!那么需要考虑! :) – 2013-02-13 08:50:45

相关问题