我想从此表中获取名称,但我只有不唯一的数字。我如何获得正确的名称(请给我一些SQL语法)? 在数据库表下方,您可以看到
的输入和预期输出Database Table
Number Name
1 Anna
1 Anna
2 Brad
2 NULL
2 NULL
2 NULL
3 NULL
3 NULL
4 Adam
5 NULL
输入和预期输出:
Number (Input) Name (Expected outpu)
1 Anna
2 Brad
3 NULL
4 Adam
5 NULL
我需要在查询中添加什么才能使其正常工作?
SELECT Name FROM tablename
WHERE Number='chosen number'
答案 0 :(得分:1)
简单的MAX / GROUP BY将返回您的预期结果集:
SELECT Number, MAX(Name)
FROM table name
GROUP BY 1;
顺便说一句,NUMBER是Teradata中的保留名称
答案 1 :(得分:0)
这是朝着正确方向迈出的一步,问题是你仍然会得到NULL,如果你有一行NULL,请告诉我如何在有名称的情况下过滤掉那些
Mysql会是这样的: http://sqlfiddle.com/#!9/4beca/1
SELECT DISTINCT Name
FROM mytable
WHERE Number=1 AND Name is not null
UNION
SELECT NULL
FROM mytable
LIMIT 1
SQL-Server将是这样的: http://sqlfiddle.com/#!3/f4078/11
SELECT TOP 1 sub.Name
FROM
(SELECT DISTINCT Name
FROM mytable
WHERE Number=1 AND Name is not null
UNION
SELECT NULL AS Name
FROM mytable) AS sub
答案 2 :(得分:0)
SELECT
number,
MAX(name)
FROM
your_table
GROUP BY
number
和/或
SELECT
MAX(name)
FROM
your_table
WHERE
number = x
MAX,MIN等都将NULL视为最后一个值;如果所有值都为NULL,则只获得NULL。