我正在尝试加入一张表格,强制只显示超过0张未打印的凭证的凭证结果。
但现在我收到消息,我正在使用组功能错误。但是,我想我根本就没有使用group。
有什么想法吗?
SELECT *
FROM voucherroll INNER JOIN voucher ON voucherroll.id = voucher.id_voucherroll
WHERE voucher.printed = 0
AND Count(voucher.id > 0)
更新说明: 有多个卷,有多个凭证。 如果打印凭证,则不应显示凭证。 我想要每卷,未打印的优惠券超过0
答案 0 :(得分:1)
您使用的是count()
,但它不属于where
。
也许这是你的意图?
SELECT *
FROM voucherroll INNER JOIN
voucher
ON voucherroll.id = voucher.id_voucherroll
WHERE voucher.printed = 0 AND voucher.id IS NOT NULL;
但是,对于名为id
的内容来说NULL
值会有所不同。
编辑:
我认为这就是你想要的:
SELECT vr.*
FROM voucherroll vr
WHERE EXISTS (SELECT 1
FROM voucher v
WHERE vr.id = v.id_voucherroll and
v.printed = 0
)
如果你想要超过1,那么使用效率较低的:
SELECT vr.*
FROM voucherroll vr
WHERE (SELECT COUNT(*)
FROM voucher v
WHERE vr.id = v.id_voucherroll and
v.printed = 0
) > 1;
答案 1 :(得分:1)
尝试使用子查询计算如下:
SELECT *
FROM voucherroll
INNER JOIN voucher ON voucherroll.id = voucher.id_voucherroll
WHERE voucher.printed = 0
AND (select count(v.id)
from voucher v
where voucherroll.id = v.id_voucherroll ) > 0
您无法在count
子句中使用where
。可以在having
子句中使用group by
。