繁体   English   中英

在mysql中获取不同列名称的简单方法

[英]Simple way to get distinct column names in mysql

以下是我正在mysql中运行的查询,该查询工作正常-

SELECT * 
FROM `events` e 
LEFT JOIN venues v 
ON e.venue_id = v.id 
WHERE e.artist_id = 16

在我的事件和艺术家表中,我具有一些常见的命名属性,例如idlatlong

因此,在从查询中获取结果输出时,我需要执行以下操作以使id,lat,长距离区分是针对其表指定所有列名称-

SELECT e.id as e_id, v.id as v_id .........AND LOT MORE
FROM `events` e 
LEFT JOIN venues v 
ON e.venue_id = v.id 
WHERE e.artist_id = 16

所以您只看到3-4件事,我需要写很多东西而不是简单的* ...因此,从开发人员的懒惰中,我正在寻找某种方式来缩短它,而不是在SELECT ......中编写和指定所有内容SELECT ......

请让我知道是否有一种方法可以使它简短。

您可以采用类似以下方式自动枚举列:

$cols = [];

$stmt = $db->exec("SHOW COLUMNS FROM events");
foreach($stmt as $r)
    $cols []= "e.{r['Field']} as e_{r['Field']}";

// the same for the second table, then

$cols = implode(',', $cols);

"SELECT $cols FROM ..."

如果您要执行许多这样的查询,则可以将生成的列列表缓存在某处,以避免过多的“ SHOW COLUMNS”查询(尽管这些查询非常快)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM