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

时间:2014-11-24 18:04:39

标签: php mysql sql

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

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

在我的活动和艺术家表格中,我有一些常用的命名属性,例如idlatlong

因此,在从查询中获取结果输出时,我需要做类似这样的事情来使id,lat,long区分是指定与其表相关的所有列名 -

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

所以你只看到我需要写的很多东西,而不是简单的* ...所以来自开发人员的懒惰种族,我正在寻找缩短这个而不是写作和在SELECT ......中指定所有内容。

如果我有办法让它缩短,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以使用与此类似的方式自动枚举列:

$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”查询(尽管这些查询非常快)。