在没有 JOIN 的 WHERE 子句中使用 CTE

Use CTE in the WHERE clause without JOIN

我想搜索 WHERE 子句中的值列表。该列表在另一个 table 中,可以通过 CTE 返回。示例:

参考文献table

ref_number Other irrelevant columns
abcdEF row
cdefGH row
WITH References AS (SELECT ref_number FROM References)
SELECT t.ref,t.* FROM my_tables t
WHERE t.ref IN References

这会引发错误,我相信 IN 需要 table.

中格式正确的集合

我想在 IN 子句之后列出引用,而不是手动输入它们,或者以其他方式确定子句来读取该条件。如果可能的话,我想要 PostgreSQL 和 SQL Server 的解决方案。非常感谢。

你不能只说“IN CTE”,你必须说“IN (select x from CTE)”或者在适当的情况下简单地将 CTE 加入查询的其余部分。