У меня есть этот запрос:
SELECT distinct
num as number,
name as name
from my_table_name
where number = '12345';
И вот результаты:
number - name 1. 12345 - mike 2. 12345 - charlie 3. 12345 - jose
Когда это происходит, мне нужен новый запрос (числа повторяются или повторяются трижды), покажите мне только один из них. Пример:
number - name 12345 - mike
Мне нужен только один из них; позиция не имеет значения. Если он найдет его, распечатайте это и закройте процедуру, функцию или курсор.
4 ответа
Distinct будет возвращать результаты, отличные от всех данных, которые вы запрашиваете. Если вам нужен только один из результатов и вы знаете, что используемый результат произвольный, вы можете просто добавить фильтр по номеру строки (как конкретно это делается, зависит от того, какую СУБД вы используете).
Пример Oracle:
select num as "number",
name as "name"
from my_table_name
where number = '12345'
and rownum = 1; -- just gets the first row.
SELECT * from
(SELECT rownum rnum,
num as number,
name as name
FROM my_table_name
WHERE number = '12345' )
WHERE rnum = 1
where rnum = 1
?
Использовать аналитическую функцию ROW_NUMBER
SELECT *
FROM
(
select id, name, ROW_NUMBER() OVER ( partition by id order by name asc) as seq
from tableA
where number = '12345'
) T
where T.seq =1
Если вам все равно, какой из них возвращается, почему вы вообще просите его вернуть?
Однако, чтобы получить одну строку результатов независимо от количества совпадающих строк, вам, вероятно, следует использовать GROUP BY
и сводную функцию:
Select
num as number,
max(name) as name --or min(), or any other summary function that works on this data type
from my_table_name
where num = '12345'
group by num
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.