mysql - 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
解决方案
可能是您需要联合选择,例如:
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 获得不同的结果
推荐阅读
- c - 带有嵌套结构指针的 C 段错误
- python - 如何将较高的值减少到 1 并从右到左排序
- c - 什么是主线程?
- python - 如何构建我的文件夹来测试我的代码:
- sentry - Sentry 发布版本
- node.js - 使用 REST API 上传 Angular 文件路径
- sqlite - 在 Sqlite3(SELECT 命令)中请求数量为 IS NULL(IS NOT NULL)单元格的行
- javascript - 在间隔内调用函数会导致我的 JS 文件中出现“Uncaught TypeError: this._FunctionName is not a function”
- c# - 使用 Roslyn 从编译中获取所有类型?
- python - Django ArrayField 默认应该是可调用的