首页 > 解决方案 > 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

这可能吗 ?

注意:我知道我可以简化第一个查询,使其不会被嵌套。我只是用它来解释我的问题。

标签: sqlsqlite

解决方案


WITH 是您要查找的关键字。

With MyMacro AS SELECT * FROM table2 WHERE col1=@parameter

SELECT * FROM table1 INNER JOIN MyMacro ON table1.col3=MyMacro.col5

推荐阅读