我正在尝试在具有以下配置的SQL数据库中找到最年长的人:
Customers (
cardNo INTEGER PRIMARY KEY,
first TEXT,
last TEXT,
sex CHAR,
dob DATE
)
我正在尝试在数据库中找到最老的客户,其中有28个客户(它们具有相同的dob)。我不确定如何从min()关键字获取多个结果。
答案 0 :(得分:2)
您可以使用子查询来做到这一点。
类似的东西:
SELECT first, last FROM Customers
WHERE
dob = (SELECT MIN(dob) FROM Customers);
答案 1 :(得分:0)
我相信 MIN()/ MAX()是一个聚合函数,这意味着它返回单个标量值。
有关聚合函数的更多信息,请参见:Aggregate functions info
但是要解决您的问题,查询应该像这样。
MS SQL
SELECT
c.first,
c.last
FROM Customers c
WHERE c.dob IS NOT NULL
AND c.dob = (
SELECT TOP 1 cc.dob
FROM Customers cc
WHERE cc.dob IS NOT NULL
ORDER BY cc.dob
)
GROUP BY c.dob
ORDER BY c.dob
SQL LITE
SELECT
c.first,
c.last
FROM Customers c
WHERE c.dob IS NOT NULL
AND c.dob = (
SELECT cc.dob
FROM Customers cc
WHERE cc.dob IS NOT NULL
ORDER BY cc.dob
LIMIT 1
)
GROUP BY c.dob
ORDER BY c.dob
我认为仍然需要优化。希望这可以帮助。 :)