我想做一个SELECT查询哪个组由3个第一个varchars ond显示每个的onces。例如表“tblanimals”:
id name age
-- ---- ---
1 DOG1 10
2 DOG2 12
3 DOG3 14
4 CAT1 16
5 CAT2 18
输出应为:
DOG
CAT
之后我需要创建另一个(内部循环)简单查询来显示我们上次查询的每个结果的详细信息:
DOG DOG1 10
DOG2 12
DOG3 14
CAT CAT1 16
CAT2 18
10X
答案 0 :(得分:1)
您可以使用 SUBSTR()
对此进行分组select SUBSTR(name,1,3) as n from test group by n;
你想要的结果:
select SUBSTR(name,1,3) as n,id,name,age from test;
答案 1 :(得分:0)
此查询可以帮助您:
小提琴:here
select
(
case i.rank
when 1 then i.subname
else '' end
) groupname,
i.name,i.age
from
(SELECT SUBSTRING(`NAME`,1,3)AS SUBNAME, t.name,t.AGE ,
(
CASE SUBSTRING(`NAME`,1,3)
WHEN @curType
THEN @rownum := @rownum + 1
ELSE @rownum := 1 AND @curType := (SUBSTRING(`NAME`,1,3)) END
)+1 AS rank
FROM TEST t,
(SELECT @rownum := 0, @curType := '') r
) i
<强>输出:强>
GROUPNAME | NAME | AGE
DOG | DOG1 | 10
| DOG2 | 12
| DOG3 | 14
CAT | CAT1 | 16
| CAT2 | 18
查询解释
innerQuery(i)用于排名并根据动物名称的前3个字符获取rownumbers。仅当rownumber = 1时,使用case语句显示动物名称。如果rownumber不是1,则显示空白字符。
答案 2 :(得分:0)
SELECT SUBSTRING(name,1,3) AS first3Char, name,age FROM test2
GROUP BY first3Char,fName,lName
请检查以上查询是否符合您的目的。