嗨,我查看了“多列案例”问题,没有看到与此相同的内容,所以我想我应该问一下。
基本上我有两个要加入的表(都是子查询的结果)。它们具有相同的列名。如果我加入他们的 id 并且SELECT *
我得到每一行是这样的:
A.id, A.x, A.y, A.z, A.num, B.id, B.x, B.y, B.z, B.num
我想要的是一种只选择 num 值较低的表列的方法。所以在这种情况下,结果表总是有 5 列,id, x, y, z, num
我不在乎id, x, y, z, num
事后来自哪个表。如果它们相等,任何一个表结果都可以。
SELECT CASE WHEN A.num < B.num THEN A.* ELSE B.* END FROM A JOIN B ON A.id=B.id
会很完美,但你只能在 CASE 语句中返回一列,我可以为每一列使用一个 CASE,但这似乎很浪费(我的实际数据库中的每个表中有 8 个,所以我会有 8 个 CASE 语句)。
这是 SQLite 顺便说一句。任何帮助,将不胜感激!
编辑以获取有关 A 和 B 的更多信息: A 和 B 来自这样的查询
选择“认为案例陈述可能会在这里” FROM
(SELECT id, x, y, z, num FROM Table1 a JOIN Table2 b ON a.id=b.id AND (y BETWEEN (53348574-3593) AND (53348574+3593)) AND (z BETWEEN (-6259973-6027) ) AND (-6259973+6027)) 加入表 3 c ON c.id= b.id GROUP BY a.id, cr) A
加入
(SELECT id, x, y, z, num FROM Table1 a JOIN Table2 b ON a.id=b.id AND (y BETWEEN (53401007-3593) AND (53401007+3593)) AND (z BETWEEN (-6397286-6027) ) AND (-6397286+6027)) 加入表 3 c ON c.id= b.id GROUP BY a.id, cr ) B ON A.id=B.id
因此,如果您想知道为什么数字很大,它会连接两个基于地理位置制作的表,并且需要根据在任一位置找到的属性来决定从哪个表中获取数据。