目前停留在一个SQL路障,我没有运气找到任何答案,我的问题,由于如何通用的相关词语。
我有两个问题,看起来完全一样,但产生的结果不同。
对于这些示例,假设没有带有id 123
的条目,并且MyTable
具有以下列:id
、time
和data
。
一个查询针对的是不存在所有列的条目
SELECT id, data, time FROM MyTable WHERE id = 123
它不返回任何结果。
另一个查询也是针对不存在所有列的条目
SELECT id, data, min(time) FROM MyTable WHERE id = 123
它返回一个结果,其中每列的值为null
Android Studio中的示例:
不返回任何结果,如所需x1c 0d1x
返回一个所有列均为null的结果
即使我将列命名为相同的名称
,也会发生相同的问题
我试图在第二个查询中实现与第一个查询相同的行为;如果没有结果,则不返回任何结果,而不是返回一个结果,其中所有列的值都为null。
我知道我可以通过做一个子查询来解决这个问题,但是我更喜欢使用像上面一样简单的单个查询。
这是不可能的吗?还是有一种方法可以在Android Room Library / SQLite中实现这一点?
编辑:这个问题最初是不正确的,感谢用户在评论中我意识到每当在查询中使用min(...)
时都会出现这个问题,所以我更新了这个问题以反映正确的问题。
1条答案
按热度按时间ws51t4hk1#
这一点:
是一个没有GROUP BY子句的聚合查询,因此它将始终返回恰好1行。
如果你希望它在
WHERE
子句中的条件失败时不返回任何东西,请使用EXCEPT
:或者,在没有
GROUP BY
子句的聚合查询中使用带有HAVING
子句的SQL的 * 非标准SQL* 功能(这在其他数据库中不起作用):或者,使用
GROUP BY
子句:参见demo。