我有两个表1用于类别,另一个表用于任务。
每个类别都有优先权。
我正在尝试选择具有最高优先级的类别(忽略没有任务的类别)
问题是如果所有类别都没有任务,则返回1个结果,所有字段为空
类别表包含以下列:
id
name
priority (int beween 1 to 5)
active
任务表包含以下列:
id
name
category (id from category table)
active
这是我的问题:
select cat.*, max(cat.priority)
from categories cat
WHERE (
select count(*) AS count
from schedules
WHERE schedules.category = cat.id
AND schedules.active = 1
) > 0
问题似乎是当子查询的结果为0时,主查询看起来像这样:
select cat.*, min(cat.priority)
from categories cat
WHERE 0 < 0
并返回空值
我在android上使用sqlite
答案 0 :(得分:2)
只需在您的任务表上执行INNER JOIN
,即可在没有任务的情况下过滤行。
请勿使用MAX()
汇总功能,因为您没有GROUP BY
,如果没有值符合您的过滤条件,则会返回NULL
。
如果您只想保留最高优先级,ORDER BY
优先级DESC
和LIMIT
结果返回到第一行
select cat.*
from categories cat
INNER JOIN schedules
ON (schedules.category = cat.id)
WHERE schedules.active = 1
ORDER BY cat.priority DESC
LIMIT 1