组功能的使用无效。但不使用组

时间:2015-04-23 12:10:01

标签: mysql sql

我正在尝试加入一张表格,强制只显示超过0张未打印的凭证的凭证结果。

但现在我收到消息,我正在使用组功能错误。但是,我想我根本就没有使用group。 有什么想法吗?

SELECT * 
FROM voucherroll INNER JOIN voucher ON voucherroll.id = voucher.id_voucherroll
WHERE voucher.printed = 0
AND Count(voucher.id > 0)

更新说明: 有多个卷,有多个凭证。 如果打印凭证,则不应显示凭证。 我想要每卷,未打印的优惠券超过0

2 个答案:

答案 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