sql - Bigquery if 选择参考表的条件
问题描述
我有两个表:Table_A 和 Table_B 我还有一个参数 {{param.age}}
我想检查年龄,如果是 15 从 Table_A 中选择 *,否则从 table_B 中选择 *。
我想出了这个不起作用的解决方案:
SELECT
CASE 3
WHEN 3 THEN ( SELECT * FROM `Table_A`)
ELSE
(SELECT * FROM `Table_B`)
END
我收到此错误:标量子查询不能有超过一列...我确信有一个简单直接的解决方案,我找不到。
须藤代码:
If parameter = x
Then SELECT * FROM Table_A
Else SELECT * FROM Table_B
解决方案
假设两个查询具有相同的列,您可以执行以下操作:
select *
from table_A
where parameter = x
union all
select *
from table_B
where parameter <> x;
如果这两个表没有相同的列,我会质疑你想要做什么。SQL 查询返回一组固定的列。你想要哪些列?如果两个表之间有公共列,则显式选择它们。
推荐阅读
- java - 每次实例化子类时都会创建超类对象吗?
- python - 如何定义 JSON 元素中的内部依赖关系?
- python - Python 中的年日日期差异(无月数)
- javascript - 如何禁用剩余的输入字段取决于在文本字段中输入的值?
- elasticsearch - Elasticsreach 按字段值提升查询
- c# - 从 Twitch Clip URL 中提取 ID
- reactjs - React 路由在与 webpack.config.js 一起使用时正常工作,但在从 webpack.config.js 重定向时不工作
- java - 比较两个arrayList得到共同的值,它应该不影响原始值
- codenameone - 当 App 在 CN1 崩溃时会调用 stop() 方法
- angular - 模态无法使用 NgbActiveModal 关闭