select count(*) 什么都不显示(不是空值,什么都没有)
select count(*) showing nothing (not null value, just nothing)
当我 运行 以下查询时,我什么也没得到。不是空值,但什么都没有(图像不是在(没有列名)之后没有被截断的,那里什么也没有)。
如果去掉最后一个 AND 子句,我会得到一个数字(即使该数字为零),如果我 运行 NOT IN 括号内的查询,我会得到预期的结果。如果我用我从该查询得到的结果替换 NOT IN 括号内的查询,它将给我正确的数字。
我想让它说 0 而不是什么都没有。 COALESCE 和 ISNULL 不起作用,因为没有返回空值,似乎没有返回任何内容。
SELECT count(*)
FROM groups g
INNER JOIN item_group ig ON g.groupid = ig.groupid
INNER JOIN item_materiel im ON ig.itemid = im.item_id
WHERE g.groupid = 4933
AND im.ItemMateriel_ID NOT IN (
SELECT oim.ItemMaterielID
FROM groups g
INNER JOIN item_group ig ON g.groupid = ig.groupid
INNER JOIN orderitem oi ON ig.itemid = oi.itemid
INNER JOIN OrderItemMateriel oim ON oi.OrderItemID
= oim.OrderItemID
WHERE g.groupid = 4933
)
GROUP BY g.groupid
您需要删除 GROUP BY g.groupid
。由于您只选择了一个 groupid,因此无论如何都无法对其进行分组。
当我 运行 以下查询时,我什么也没得到。不是空值,但什么都没有
如果去掉最后一个 AND 子句,我会得到一个数字(即使该数字为零),如果我 运行 NOT IN 括号内的查询,我会得到预期的结果。如果我用我从该查询得到的结果替换 NOT IN 括号内的查询,它将给我正确的数字。
我想让它说 0 而不是什么都没有。 COALESCE 和 ISNULL 不起作用,因为没有返回空值,似乎没有返回任何内容。
SELECT count(*)
FROM groups g
INNER JOIN item_group ig ON g.groupid = ig.groupid
INNER JOIN item_materiel im ON ig.itemid = im.item_id
WHERE g.groupid = 4933
AND im.ItemMateriel_ID NOT IN (
SELECT oim.ItemMaterielID
FROM groups g
INNER JOIN item_group ig ON g.groupid = ig.groupid
INNER JOIN orderitem oi ON ig.itemid = oi.itemid
INNER JOIN OrderItemMateriel oim ON oi.OrderItemID
= oim.OrderItemID
WHERE g.groupid = 4933
)
GROUP BY g.groupid
您需要删除 GROUP BY g.groupid
。由于您只选择了一个 groupid,因此无论如何都无法对其进行分组。