Вы можете группировать по coalesce / ifnull (они одинаковы в этом примере):
GROUP BY COALESCE (tableNum, deviceNum)
GROUP BY IFNULL (tableNum, deviceNum)
См. Документацию:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_coalesce
Выможет иметь некоторые бессмысленные групповые коллизии между tableNum и deviceNum, если два столбца содержат одинаковые значения.В зависимости от того, какой тип результата вы хотите получить, вы можете написать что-то вроде этого, чтобы избежать коллизий:
GROUP BY CASE WHEN tableNum IS NOT NULL
THEN CONCAT('tableNum : ', tableNum)
ELSE CONCAT('deviceNum : ', deviceNum)
END
Это может быть довольно медленно, хотя, как и в случае CONCAT
, нет никаких шансов наиспользуя индексы ... Просто чтобы дать вам представление.Примечание: как заявил ypercube, UNION
будет быстрее, потому что MySQL может распараллеливать подзапросы