sql - sqlite查询中的子查询替换
问题描述
我是 SQLite 和 SQL 的新手。我正在玩一些嵌套查询,发现我重复使用了一些子查询。我想知道是否有任何方法可以简化查询以获得更好的可读性。考虑以下查询。
SELECT *
FROM
table1
INNER JOIN
(
SELECT *
FROM
table2
WHERE
col1=1234
) t
ON table1.col3=t.col5
我想通过等效于以下内容(在 C 宏语法中)来简化这一点:
#define MYMACRO(X) SELECT * FROM table2 WHERE col1=X
SELECT * FROM table1 INNER JOIN MYMACRO(1234) t ON table1.col3=t.col5
这可能吗 ?
注意:我知道我可以简化第一个查询,使其不会被嵌套。我只是用它来解释我的问题。
解决方案
WITH 是您要查找的关键字。
With MyMacro AS SELECT * FROM table2 WHERE col1=@parameter
SELECT * FROM table1 INNER JOIN MyMacro ON table1.col3=MyMacro.col5
推荐阅读
- python - Pandas、时间数据 ' ' 或空格与格式不匹配
- sql - 如何在 MariaDB 的“WHERE IN”子句中使用 JSON 数组
- reactjs - 与 Auth0 联合在 Amplify React 中不起作用
- android - Android 与 spinner 的一对多关系
- c# - WebAPI 异步任务
通过模型 - ruby - EnvelopesController#index 中的参数错误
- google-bigquery - Airflow Jinja 模板不适用于自定义运算符
- javascript - 如何将“&”更改为 & 用于 twitter javascript 程序
- c# - WPF C# POS 打印机,从下拉菜单中打开设备
- linux-mint - 无法在 linux mint19.2 中安装 Albert