我有很多使用的表id
作为主键。当我将几张桌子连接在一起并且select *
,仅显示 id 列之一。使用 MySql 时,解决这个问题的唯一方法是使用SELECT AS
, 例如SELECT id AS groupId
.
MariaDB 仍然是这种情况吗?我的重复列名不仅限于 id 字段,因此我最终得到了非常详细的 select 语句。
我希望 MariaDB 可以引入一个查询功能,允许列名以其表名作为前缀。例如,查询可能会返回列名称group.id
and person.id
.
编辑:根据 Shadow 的评论,问题不在于 MariaDB (或 MySql)。结果集确实包含多个“id”字段。问题在于客户端库,在我的例子中是 PDO。
如果结果集中有多个具有相同名称的列,那么即使 mysql 也会返回所有这些列,但它们在结果集中也将具有相同的名称,除非您使用字段别名。创建了一个sqlfiddle来证明这一点here。您的客户端库可能无法区分这两列。这是一个已知问题,例如 Laravel。
mysql 和 mariadb 都允许您在字段名称前添加表名称前缀,但是表名称不会作为字段名称的一部分返回。但是,大多数客户端库都能够检索 mysql / mariadb 返回的结果集中列的元数据,其中包括非计算列的表名称。参见示例mysqli_fetch_field_direct()功能。
您可以使用从元数据检索到的表名称来确定哪个 id 列属于哪个表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)