mysql - 如何在sql中获取表名和一列?

标签 mysql sql sql-server

我的数据库中只有几张表。我想获取所有表名以及一个字段,即在每个表中都很常见的 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/

相关文章:

java - 同时使用 INSERT INTO 和 UPDATE - JAVA SQL

php - 此 php 登录代码始终不返回任何内容

sql-server - SQL Server 2008 - sp_refreshview 对某些 View 的轰炸

sql - 在 MS SQL Server 中的多个表之间共享基于相同列的复合外键

sql - 只需使用 SSIS BIML 勾选模糊查找转换对象中的复选框即可

sql-server - 添加具有生成名称的 DEFAULT 约束

python - 使用 SqlAlchemy 执行原始查询(在 SQL-Server 数据库和 Pymssql 上)时,传递的参数无法识别并引发 SQL 错误

php - 在繁忙的网站上使用单例连接到 MySql

mysql - 确定最常用的词集php mysql

sql - 将 SQL 表中的行输出到一个带有逗号的字段中