Ответ 1
Вы можете использовать CTE
с функцией ROW_NUMBER
:
WITH CTE AS(
SELECT myTable.*
, RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID)
FROM myTable
)
SELECT * FROM CTE
WHERE RN = 1
У меня есть таблица myTable
, в которой есть два поля ID
и patientID
. Один и тот же идентификатор пациента может находиться в таблице более одного раза с другим идентификатором. Как я могу убедиться, что я получаю только ONE
экземпляр каждого patientID
.?
EDIT: Я знаю, что это не идеальный дизайн, но мне нужно получить информацию из базы данных и сегодня, а затем исправить ее позже.
Вы можете использовать CTE
с функцией ROW_NUMBER
:
WITH CTE AS(
SELECT myTable.*
, RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID)
FROM myTable
)
SELECT * FROM CTE
WHERE RN = 1
Похоже, вы ищете DISTINCT
:
SELECT DISTINCT patientID FROM myTable
вы можете получить тот же "эффект" с помощью GROUP BY
:
SELECT patientID FROM myTable GROUP BY patientID
Простым способом было бы добавить LIMIT 1
в конец вашего запроса. Это гарантирует, что в результирующем наборе будет возвращена только одна строка.