sql - 查询交叉表的好方法

标签 sql

我有 3 个表:

A(k1,A) B(k1,k2,B)C(k2,C)

我想过滤掉所有满足C.k2条件的A。在此示例中,我必须过滤遍历表 B:过滤所有与 A 具有相同 k1 属性的 B,并使用 B(我之前过滤过的)过滤所有 C k2 属性。

我有一个丑陋的方法来做到这一点:

select * from A where k1 in (select * .....)//看起来丑陋且难以追踪

我已经考虑过使用 join 函数,但我真的不知道该怎么做。请告诉我此查询的最佳方式。

谢谢:)

最佳答案

试试这个查询。

select * from A
join b on a.k1 = b.k1
join c on c.k2 = b.k2

Explanation for JOIN

enter image description here

关于sql - 查询交叉表的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16805268/

相关文章:

mysql - 使用group by和join时无法获取每天的最后订单金额

sql - 获取两个日期之间的工作日数(周日、周一、周二)SQL

php - 在 PHP PostgreSQL 查询结果中找到或未找到结果时显示消息

mysql - 合并两个包含 JOIN 的 SELECT

sql "chain of command"

sql - 将 XML 与反向路径相结合

sql - 在哪里可以查看 SQL Server 启动/停止日志?

php - 数据库查询未返回完整字符串

mysql 匹配错误

sql - 消除由于 BETWEEN(和 GROUP BY)引起的全表扫描