当前位置: 首页 > 面试题库 >

MySQL连接所有列

狄旭
2023-03-14
问题内容

为什么我们不能在MySQL中使用*关键字进行连接?

SELECT concat(*) FROM table

要么

SELECT group_concat(*) FROM table

还有其他方法可以访问列中的值而无需显式使用列名吗?


问题答案:

要连接表中的所有列,不能使用*关键字,但是需要显式列出所有列:

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable

或者您可能想使用CONCAT_WS它将跳过空值的方法:

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable

如果您不想手动指定所有列名,则可以使用动态查询。该查询将返回表的所有列名称:

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable';

并使用GROUP_CONCAT,您可以获得所有列名称的列表:

GROUP_CONCAT(CONCAT('`', column_name, '`'))

用逗号分隔的格式引用:

`col1`,`col2`,`col3`,`col4`,...

因此,现在我们有了所有可以动态创建查询的元素:

SELECT
  CONCAT(
    'SELECT CONCAT_WS(\'\',',
    GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
    ') AS all_columns FROM yourtable;')
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'
INTO @sql;

该查询会将@sql字符串设置为类似以下内容:

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable

这段代码将执行它:

PREPARE stmt FROM @sql;
EXECUTE stmt;

请看这里的小提琴。



 类似资料:
  • 问题内容: 我一直在使用SQL Server,现在正在将MySQL用于一个项目。使用SQL Server,我们的开发人员可以在知道主机,用户名和密码的情况下连接到本地计算机上的远程数据库。但是,使用MySQL,要使开发人员能够从其本地计算机访问,我一直必须登录MySQL并执行: 开发人员机器的IP地址在哪里。当然,如果他们更改网络,则必须再次执行。有没有一种方法可以允许所有远程连接(如我在SQL

  • 内连接,显示两个表中有联系的所有数据; 左链接,以左表为参照,显示所有数据,右表中没有则以null显示 右链接,以右表为参照显示数据,,左表中没有则以null显示

  • 本文向大家介绍MySQL 的内连接、左连接、右连接有什么区别?相关面试题,主要包含被问及MySQL 的内连接、左连接、右连接有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 内连接关键字:inner join;左连接:left join;右连接:right join。 内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反。

  • 主要内容:我是该用 MySQLi ,还是 PDO?,MySQLi 和 PDO 连接 MySQL 实例,MySQLi 安装,PDO 安装,连接 MySQL,实例 (MySQLi - 面向对象),实例 (MySQLi - 面向过程),实例 (PDO),关闭连接,实例 (MySQLi - 面向对象),实例 (MySQLi - 面向过程),实例 (PDO)PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP D

  • 主要内容:左连接,右连接在《 MySQL内连接》一节我们了解了 MySQL 的内连接。内连接的查询结果都是符合连接条件的记录,而外连接会先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。 外连接可以分为左外连接和右外连接,下面根据实例分别介绍左外连接和右外连接。 左连接 左外连接又称为左连接,使用 LEFT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。 左连接的语法格式

  • 在《 MySQL交叉连接》一节中我们了解了 MySQL 的交叉连接,本节主要介绍多表查询的另一种方式——内连接。 内连接(INNER JOIN)主要通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。 内连接使用 INNER JOIN 关键字连接两张表,并使用 ON 子句来设置连接条件。 如果没有连接条件,INNER JOIN 和