在sql数据库中查找最老的客户

时间:2018-10-05 00:35:40

标签: sqlite

我正在尝试在具有以下配置的SQL数据库中找到最年长的人:

Customers (
    cardNo INTEGER PRIMARY KEY,
    first TEXT,
    last TEXT,
    sex CHAR,
    dob DATE
)

我正在尝试在数据库中找到最老的客户,其中有28个客户(它们具有相同的dob)。我不确定如何从min()关键字获取多个结果。

2 个答案:

答案 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

我认为仍然需要优化。希望这可以帮助。 :)