首页 > 解决方案 > sql 不存在时跳过选择项

问题描述

我有三种类型的数据源。它们具有相似的结构,但存在一些差异。例如,类型 A 包含名为等级的列,但类型 C 不包含。在进行 sql 选择时,我只想编写一个查询(因为要选择的项目很多,而且大多数都是相同的)。这意味着对于 C 类数据源,不会有等级。在这种情况下,我该如何跳过这个特定的选择。

我的查询说明如下:

SELECT
ID,
SUM(Addable) AS addable_sum,
MAX(Date) AS max_date,
GROUP_CONCAT(Char, '_') AS Char
AVG(grade) AS grade --------------> this is what I want to skip when dealing with type C data since there is not such thing in it
FROM TypeCTable ---------------> such table does not have grade column
GROUP BY ID

标签: mysqlsql

解决方案


可能是您需要联合选择,例如:

  SELECT
  ID,
  SUM(Addable) AS addable_sum,
  MAX(Date) AS max_date,
  GROUP_CONCAT(Char, '_') AS Char
  AVG(grade) AS grade 
  FROM TypeATable
  GROUP BY ID
  UNION ALL
  SELECT
  ID,
  SUM(Addable) AS addable_sum,
  MAX(Date) AS max_date,
  GROUP_CONCAT(Char, '_') AS Char
  NULL 
  FROM TypeCTable 
  GROUP BY ID

或使用 UNION 获得不同的结果


推荐阅读