我有一个名为"user"的表,它有名为"id"、"name"的字段。
我需要从每个字母表中选择三个名字,并将其显示在一页上,所以总结果将是26*3=78。
我已经使用PHP完成了这项工作,我需要优化查询,我们可以在一个查询中完成吗?
请尝试一下这个:
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
尝试使用SELECT * FROM user WHERE name LIKE 'a%' LIMIT 0,3
我不知道你是否要求这样做。让我知道它是否解决了!!:)