具有多个列的SQL Case
您好,我已经通过多栏问题查看了该案例,但没有看到与此相同的内容,因此我想我应该问一下 基本上我有两个表,它们都是我想要连接的子查询的结果。它们具有相同的列名。如果我在他们的ID上加入他们并选择*我得到的每一行都是这样的: 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来自哪个。此外,如果两个表的结果相等,则两个表的结果都可以 选择CASE WHEN A.num具有多个列的SQL Case,sql,sqlite,select,join,case,Sql,Sqlite,Select,Join,Case,您好,我已经通过多栏问题查看了该案例,但没有看到与此相同的内容,因此我想我应该问一下 基本上我有两个表,它们都是我想要连接的子查询的结果。它们具有相同的列名。如果我在他们的ID上加入他们并选择*我得到的每一行都是这样的: 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来自哪个。此外,如果两个表的结果
因此,它连接了两个基于地理位置的表,如果您想知道为什么会有这么大的数字,那么它需要根据在其中任何一个位置找到的数据的属性来决定从哪个表获取数据。我不知道有哪一个RDBMS支持您想要的数据。你必须写8个案例陈述。但为什么这么浪费呢?还是你只是懒惰 编辑: 请参见,当您写入时,请选择*。。。RDBMS所做的是查询系统表信息、模式等,并获取表中的列列表。 所以当你写作的时候
SELECT CASE WHEN A.num < B.num THEN A.* ELSE B.* END ...
你基本上是在写作
SELECT CASE WHEN A.num < B.num THEN A.num, A.whatever, A.more, ... ELSE B.num, B.whatever, B.more... END FROM A JOIN B ON A.id=B.id
不幸的是,这是错误的语法 试试看
select A.id, A.x, A.y, A.z, A.num from A JOIN B ON A.id=B.id where a.num<b.num
union
select b.id, b.x, b.y, b.z, b.num from A JOIN B ON A.id=B.id where b.num<a.numhere
@Tichodroma@Tichodroma它确实支持CASE,它不在该页面上,因为CASE是一个表达式。请看这里:我认为这是浪费,因为这意味着一直在计算8个Case表达式,而不是1:p。这看起来很糟糕,而且对可维护性来说也不太好。即使你的*东西可以工作,也会计算所有8个Case表达式。仅仅因为你写了一条,并不意味着只有一条。不知道enter会发送评论,所以在我编辑时请容忍我。。。所以选择CASE WHEN A.num