我有下表。
name gender age
NAME1 F 21
NAME2 M 23
NAME3 F 26
NAME4 F 42
NAME5 M 52
现在我想展示包括性别和最大老年人在内的年龄较小的人,包括性别。
那是
NAME1 F 21 NAME5 M 52
我使用了以下查询。但是我没有给出正确的结果。
select max(v1.age),v1.gender, min(v2.age),v2.gender from table_name v1
,table_name v2 where v1.id =v2.id;
提前致谢...
答案 0 :(得分:0)
以下是最大值的查询:
select name, gender, age
from table_name
where age = (select max(age) from table_name)
limit 1
返回最大和最小名称等是可行的,但可能比运行2个查询更复杂。
答案 1 :(得分:0)
试试这个:
SELECT NAME, gender, age
FROM t1
WHERE age = (SELECT MAX(age) FROM t1)
UNION
SELECT NAME, gender, age
FROM t1
WHERE age = (SELECT MIN(age) FROM t1)
答案 2 :(得分:0)
您可以通过三重自联接和一个条款实现此目的:
SELECT
min(tmin.age) as min_age,
t1.*,
max(tmax.age) as max_age,
t2.*
from myTable t1
join myTable tmin
join myTable t2
join myTable tmax
group by t1.id, t2.id
having min_age = t1.age and max_age = t2.age
虽然这是你在没有子查询的情况下获得它的唯一方法,但它感觉相当hacky。是的,最大和最小年龄将出现两次:)
答案 3 :(得分:0)
尝试此查询:
select v1.age, v1.gender, v2.age, v2.gender from table_name v1, table_name v2 where v1.age =(select max(age) from table_name) and v2.age=(select min(age) from table_name)