【问题标题】:SQL Server : listing table names and its idsSQL Server:列出表名及其 id
【发布时间】:2019-06-03 10:28:00
【问题描述】:

我想列出所有指定的表及其 ID 包含在 SQL Server 中。

例如:

客户

| id | foo  |
|:---|:----:|
|  1 | This | 
|  2 | Col  |

用户

| id | bar  |
|:---|:----:|
| 1  | That | 
| 2  | Col  |
| 3  | Col  |
| 4  | Col  |

我想生成这样的结果:

| TableName |  ID  |
|:---------:|:----:|
|  Client   |   1  | 
|  Client   |   2  |
|  User     |   1  |
|  User     |   2  |
|  User     |   3  |
|  User     |   4  |

我所做的是列出所有需要的表名,但我不知道如何列出它的id

SELECT t.name AS TableName
FROM sys.tables as t
WHERE t.name = 'Client'
   OR t.name = 'User'

输出:

| - | TableName |
|---| --------- |
| 1 |  Client   |
| 2 |   User    |

有什么想法吗?

【问题讨论】:

  • 只有这两张表,还是还有更多?
  • @APH 6 还有更多,但是 Yogesh 的回答应该就足够了吗?
  • 是的,对于 8 张桌子,我会使用该解决方案。对于许多表,您可能需要一个动态 sql 解决方案。

标签: sql sql-server sql-server-2008 sql-server-2005


【解决方案1】:

你需要UNION ALL

SELECT 'Client' AS TableName, ID   
FROM Client 
UNION ALL
SELECT 'User', ID
FROM User; 

【讨论】:

    【解决方案2】:

    你需要UNION

    SELECT T.Name,
           C.ID
    FROM Sys.Tables T CROSS APPLY
         Clients C
    WHERE T.Name = 'Clients'
    UNION
    SELECT T.Name,
           U.ID
    FROM Sys.Tables T CROSS APPLY
         Users U
    WHERE T.Name = 'Users'
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多