Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
526 views
in Technique[技术] by (71.8m points)

两条查询SQL的语句的数据合并到一起

大神们好,我目前遇到这样一个问题。
我现在有一个SQL语句A,

SELECT
    TABLE_NAME table_name,
    COLUMN_NAME id,
    DATA_TYPE str,
    IS_NULLABLE nullable,
    COLUMN_COMMENT remark 
FROM
    INFORMATION_SCHEMA.COLUMNS 
WHERE
    table_schema = 'test'

这个语句是我拿来查询我这个库的所有表名,字段名,数据类型,是否为空和字段注释的。

我有一个SQL语句B,

SELECT
    TABLE_NAME,
    TABLE_COMMENT,
    TABLE_ROWS
FROM
    information_schema.TABLES 
WHERE
    table_schema = 'test';

这个语句是我拿来查询我这个库的所有表名和表注释的。

因为目前这两个语句没有办法合并,所以我才用的方法是先查询出来语句A的数据,然后使用foreach查询语句B的数据插入到语句A后面。

但是目前因为语句A的数据量太大,语句B的数据量太小,所以这个办法目前只能实现批量处理,我想问下各位大神,这个问题我应该怎么去解决呢

附上语句A的查询总条数和语句B的查询总条数以及我的垃圾代码
image.png
image.png
image.png

我想实现的效果是:一次性取出所有的数据,把值都给追加好。因为我是个菜鸡,不知道这方面能不能实现,还望各位大神赐教


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

问题已解决。

在同事的帮助下,这个思路可以在引入第三条语句的时候进行一次性获取。
第三条语句C

SELECT
    TABLE_NAME AS table_name1,
    count( column_name ) AS count 
FROM
    information_schema.COLUMNS 
WHERE
    TABLE_SCHEMA = 'test' 
GROUP BY
    TABLE_NAME 
ORDER BY
    table_name1 ASC

废话不多少,上代码:
image.png

通过$lsit可以获取到数据库的数据表名和这个表的字段数量,通过字段数量我们可以循环遍历整个数组赋值为一个新数组,使当前这个新数组的长度等同于SQL语句A的长度,接下来正常循环判断即可


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...