2017-02-21 56 views
0

我有MySQL數據庫名稱「連接跟蹤」與下表MySQL的打印數據範圍

[email protected]:/temp# mysql -uroot -pMYSQLPASS "use conntrack; show tables;" 
+------------+ 
| 2016-11-24 | 
| 2016-11-25 | 
| 2016-11-26 | 
| 2016-11-27 | 
| 2016-11-28 | 
| 2016-11-29 | 
| 2016-11-30 | 
+------------+ 

表有如下結構,(例如)

mysql> describe `2016-12-25`; 
+----------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+----------+-------------+------+-----+---------+-------+ 
| time  | time  | NO | MUL | NULL |  | 
| username | varchar(32) | NO | MUL | NULL |  | 
| srcip | varchar(15) | NO | MUL | NULL |  | 
| srcport | varchar(5) | NO | MUL | NULL |  | 
| dstip | varchar(15) | NO | MUL | NULL |  | 
| dstport | varchar(5) | NO | MUL | NULL |  | 
| protocol | char(1)  | NO |  | NULL |  | 
+----------+-------------+------+-----+---------+-------+ 

我想從dstport領域桌子範圍2016-11-24至2016-11-26開始。如何使用單線命令做到這一點?

+0

嗯UNION '聯盟(從'2016-11-27' SELECT dstport)(從'2016-11-24' SELECT dstport);' 上述命令將顯示來自僅這兩個日期數據? 或它會得到數據BETWEEN ** 24至27 **? –

+0

僅限這兩個日期,不適用於25-26。 – Nitin

+0

如何結合或合併來自RANGE的結果(根據我的情況需要) 表名以日期格式顯示,所以我想從表格範圍獲取記錄(liek 2016-11-24至2016-11-26) –

回答

1

試試這個:

SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME BETWEEN '2016-11-24' AND '2016-11-26' 

編輯

SET @S = NULL; 
SELECT GROUP_CONCAT(CONCAT('SELECT DSTPORT FROM `', TABLE_NAME, '`') SEPARATOR ' UNION ') INTO @S 
FROM (
    SELECT DISTINCT TABLE_NAME, 1 AS GRP 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME BETWEEN '2016-11-24' AND '2016-11-26' 
) T 
GROUP BY GRP; 
PREPARE STMT FROM @S; 
EXECUTE STMT; 
DEALLOCATE PREPARE STMT; 

不知道這是你想要的或沒有,但嘗試。

+0

這顯示了兩個表的表結構, 我想從兩個表(或表的範圍)中獲得dstport列記錄 –

+0

@SyedJahanzaib請在op上發佈您想要的結果。 – Blank

+0

我已更新問題(使用您提供的命令restul) –