我有一个查询,我需要将所有列从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
模式。如果上述事情没有完成,则会出错。