我有两张桌子:
Table Users
UserId Name
1 John
2 Alice
3 Tom
4 Charles
....
23120 Bob
和
Table Clients
Id Name1 Name2 Name3 .... Name2345
1 1 3 450 4
2 2 17 33 1
...
15302920 44 231 5 7
我想在哪里进行SQL查询
Clients.Id = 1
结果如下:
Id Name1 Name2 Name3 ... Name2345
1 John Tom Bill Charles
我的客户端表有数千列,我试图找到一种方法来替换所选结果的所有列中的值(除了ID列),而没有数千个连接。
我知道我可以使用以下类型的查询(但我想避免成千上万的连接):
SELECT a.ID,
b.name name1,
c.name name2,
d.name name3
FROM clients a
INNER JOIN users b
ON a.name1 = b.userID
INNER JOIN users c
ON a.name2 = c.userID
INNER JOIN users d
ON a.name3 = d.userID
WHERE a.ID = 1
另外:
有可能吗?
答案 0 :(得分:0)
没有简单的查询来实现这一点,因为SQL在行(垂直)和列中的刚性方面基本上是灵活的。这是我提出的最接近的:
select c.id,
(select name from dbo.users where UserId = c.name1),
(select name from dbo.users where UserId = c.name2),
(select name from dbo.users where UserId = c.name3),
(select name from dbo.users where UserId = c.name4)
from clients c