Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да проверите за взаимно съществуване на полета в една и съща таблица в две колони

Ще ви свърши ли работа нещо подобно:

With ManagerWorkers As
    (
    -- get managers with workers
    Select Managers.WorkerUsername As ManagerUsername, Workers.WorkerUsername
    From tblMyTable As Managers
        Join tblMyTable As Workers
            On Workers.ManagerUsername = Managers.WorkerUsername
    ) 
Select *
From ManagerWorkers
Union All
-- get workers that have a manager in the above list
Select WorkerUsername, ManagerUsername
From tblMyTable
Where Exists(   Select 1
                From ManagerWorkers
                Where ManagerWorkers.ManagerUsername = tblMyTable.ManagerUsername
                )   

РЕДАКТИРАНЕ :Предвид актуализацията на въпроса какво ще кажете за следната заявка:

Select D1.u_username, U1.Permission, U1.Grade, D1.f_username, U2.Permission, U2.Grade
from tblDynamicUserList As D1
    Join tblDynamicUserList As D2
        On D2.u_username = D1.f_username
            And D2.f_username = D1.u_username
    Join tblUsers As U1
        On U1.u_username = D1.u_username
    Join tblUsers As U2
        On U2.u_username = D2.u_username


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 начина да получите езика по подразбиране на вход в SQL Server (T-SQL)

  2. Как да проверя съществуването на дефиниран от потребителя тип таблица в SQL Server 2008?

  3. Изпълнете динамична заявка с go в sql

  4. Променете типа данни varchar на nvarchar в съществуващата база данни на SQL Server 2005. Някакви проблеми?

  5. SQL Server 2008 - Условна заявка