我的数据库中只有几张表。我想获取所有表名以及一个字段,即在每个表中都很常见的 last_timestamp。 我知道表名
我尝试了以下查询,但它只给了我一张表,我无法为我的要求编写查询
SELECT t.table_name, MAX(c.last_timestamp) FROM information_schema.tables t, city c WHERE t.table_name='city' or t.table_name ='city_area' and TABLE_SCHEMA='my_db';
这给了我
'city', '2016-05-13 15:08:07',
我想我需要表的动态别名。但我不明白该怎么做。可能吗?
最佳答案
请尝试以下代码以获得所需的输出。
--Creating Two Temp tables
CREATE TABLE #Temp1
(
ID int IDENTITY(1,1),
TableName Varchar(50)
)
CREATE TABLE #Temp2
(
TableName Varchar(50),
last_timestamp Date
)
--Inserting the required tables into Temp table 1, From information_schema
INSERT INTO #Temp1
SELECT t.table_name AS TableName FROM information_schema.tables t WHERE t.table_name IN ('Table1','Table2') AND TABLE_SCHEMA='my_db'
--Below code gives the desired output.
DECLARE @Count INT
DECLARE @Count1 INT
DECLARE @Query nvarchar(max)
DECLARE @TableVariable Varchar(100)
SET @Count1 =0
SET @Count =(SELECT count(ID) FROM #Temp1)
WHILE (@Count1<@Count)
BEGIN
SET @Count1 =(@Count1 +1)
SET @TableVariable = (SELECT TableName FROM #Temp1 WHERE ID =@Count1)
SET @Query = 'SELECT t.table_name AS TableName,max(c.last_timestamp)AS last_timestamp FROM information_schema.tables t,' +@TableVariable+ ' c
WHERE t.table_name IN ('''+@TableVariable+''') GROUP BY t.table_name'
INSERT INTO #Temp2 EXECUTE SP_EXECUTESQL @Query
END
SELECT * FROM #Temp2
关于mysql - 如何在sql中获取表名和一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290859/