包括从select到groupBy mysql的所有列

时间:2016-05-11 06:41:35

标签: php mysql

我有一个查询,我需要将所有列从select添加到groupBy子句。这只是一个示例,我选择了大约20-25列,并且需要长时间查询。

Eg = SELECT contact.id as id, contact.name as name, 
       IF ( contact.type = 'type1', NULL, contact.organization_name), 
       contact.occupation as occupation, contact.gender as gender 
     FROM table_name 
     WHERE <condition> 
     GROUP BY contact.id.

我在数组中拥有的是:

$select = array(
  'id' => 'contact.id as id',
  'name' => 'contact.name as name',
  'type' => IF ( contact.type = 'type1', NULL, contact.organization_name),
  'occupation' => 'contact.occupation as occupation',
  'gender' => 'contact.gender as gender',
);

$groupBy = 'GROUP BY contact.id';

现在我必须动态更新groupBy子句以包含来自php代码的$select数组中的所有列。

我已经这样做了:

foreach ($select as $key => $val) {
  $alias = explode(' as ', $val);
  if ($alias[0] != 'contact_a.id') {
    $selectColAlias[] = $alias[0];
  }
}

$groupBy .= ', ' . implode(', ', $selectColAlias);

如果type数组中未包含$select,则会发生这种情况。

是否有任何可以填充我的groupBy子句以包含select子句中的所有列的内容?

我启用了ONLY_FULL_GROUP_BY模式。如果上述事情没有完成,则会出错。

0 个答案:

没有答案