簡體   English   中英

如何從同一數據庫的每個表的每個列中檢索前5個值,然后遍歷整個數據庫中的前5個值

[英]How to retrieve top 5 values from each column of each of the table of same database and then get over all top 5 in the whole database

我有2000個表的數據庫,並且隨着每個表代表一個用戶,它們似乎在增加。因此,所有表的結構都是相同的。

我想獲取前5個值,例如,如果我們采用列-> OS(操作系統),則查詢應從每個表中獲取前5個操作系統名稱及其計數,最后我應該獲得所有表的求和結果所有數據庫表中前5個操作系統名稱的總和。

怎么做 ?

我只能使用PHP和MySQL

我已經從所有表中獲取了同一列,但無法訪問存儲在其中的值。

SELECT `COLUMN_NAME` FROM INFORMATION_SCHEMA.columns WHERE TABLE_SCHEMA='database_name' AND COLUMN_NAME = 'os'

您的設計確實是您應該更改的東西,但這是在MySql中執行此操作的一種方法。 在這個小提琴中測試

create table test(os int);
insert into test SELECT 1 UNION SELECT 2 UNION SELECT 3;

create table test2(os int);
insert into test2 SELECT 11 UNION SELECT 12 UNION SELECT 13;

create table test3(os int);
insert into test3 SELECT 21 UNION SELECT 22 UNION SELECT 23;

create table testOtherColumn(Other int);
insert into testOtherColumn SELECT 101 UNION SELECT 102 UNION SELECT 103;

set @MyCmd=
concat(
(
  select substr(group_concat(' UNION SELECT ',c.COLUMN_NAME,' FROM ',c.TABLE_NAME SEPARATOR ''),8) 
  from information_schema.columns as c
  where c.COLUMN_NAME='os'
),';');

select @MyCmd;

PREPARE MyStatement FROM @MyCmd;
EXECUTE MyStatement;
DEALLOCATE PREPARE myStatement;

您將需要某種排序以及LIMIT x和聚合來實現您的目標。 我只是對您的表結構不夠了解...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM