我正在编写一个嵌入在 C 程序中的 SQL,其中包含下表:
table index:id, xx
table a:id, year, yy
table b:id, year, zz
table c:id, year, vv
a,b,c 中的 id 属于索引中的 id
那么如何按年份选择所有的id顺序呢?
你的问题不是很清楚你在追求什么。从表面上看,一个可能的答案可能是:
SELECT i.id, i.xx, a.year, a.yy
FROM index AS i
JOIN a ON i.id = a.id
UNION
SELECT i.id, i.xx, b.year, b.zz
FROM index AS i
JOIN b ON i.id = b.id
UNION
SELECT i.id, i.xx, c.year, c.vv
FROM index AS i
JOIN c ON i.id = c.id
ORDER BY year, id;
如果所有表 A、B 和 C 都连接到 Index 中的单个行,则存在替代查询(使用更多连接,其中一些可能是 LEFT OUTER JOIN)。yy
如果,zz
和表示的列vv
不兼容,那么您需要指定如何处理它们(或者干脆将它们排除在查询之外)。