#sql-server #sql-server-2008 #tsql
#sql-сервер #sql-server-2008 #tsql
Вопрос:
Здесь мои данные будут выглядеть
Здесь круг 1 является моим значением по умолчанию.
Я хочу, чтобы данные были такими,
- Если пользователь принадлежит только circle1 (то есть circle id 1), то верните его / circle как есть.
- Если пользователь принадлежит к другому circles, то удалите данные circle 1 из списка и верните.
Комментарии:
1. Размещайте не изображения, а форматированный текст, используйте кодовую кнопку редактора, чтобы отформатировать его в виде блоков.
Ответ №1:
Вы можете использовать NOT EXISTS
, как показано ниже:
SELECT
*
FROM
Tbl A
WHERE
NOT EXISTS
(
SELECT 1 FROM Tbl B
WHERE
B.PersonId = A.PersonId AND
B.CircleID <> 1
) OR
A.CircleID <> 1
Комментарии:
1. Спасибо. Вернет ли это circle 1, если у пользователя есть только circle1?
2. Большое спасибо. Все еще у меня есть сомнения. Вы выбираете из tbl два раза. Здесь, в моем фактическом запросе, где вы разместили Tbl, здесь у меня есть запрос join. Итак, если мне нравится описанный выше метод, то мне нужно вызвать join два раза. Верно? тогда это приведет к снижению производительности.
3. @JeevaJsb Я с вами не согласен. Можете ли вы попробовать запрос?
4. Конечно. Я проверю.
5. Большое спасибо. Это работает. Я просто немного изменил в зависимости от моего состояния.