mysql 带有子查询的查询不会返回空集

kcwpcxri  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(180)

我在MySQL中有两个表:
表1 -工作单
| 识别码|数量|
| - -|- -|
| 一个|2个|
| 2个|一个|
表2 -工作单中的项目
| 识别码|工单|
| - -|- -|
| 一个|一个|
| 2个|一个|
| 三个|2个|
我有一个疑问:

SELECT WORKORDERS.ID
      , WORKORDERS.QUANTITY AS NOMINAL_QTY
      , COUNT(ITEMSINWORKORDERS.WORKORDER) AS ENTERED_QTY
FROM  WORKORDERS JOIN ITEMSINWORKORDERS ON
         ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
WHERE WORKORDERS.QUANTITY >
        ( SELECT COUNT(ITEMSINWORKORDERS.WORKORDER )
          FROM   WORKORDERS INNER JOIN ITEMSINWORKORDERS ON
                    ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
        )

最初,我的语句中有一个左外连接,所以我把它切换到内连接,希望得到一个空集。当没有任何缺少条目的工作单时,我如何使它返回一个空集呢?
它用于查找所有工作单,其中未输入所有物料,并且在WORKORDERS表中输入的名义数量大于与该工作单对应的ITEMSINWORKORDERS中的记录数。我希望返回一个 * 空集 *。但我得到了
| 识别码|标称_数量|已输入_数量|
| - -|- -|- -|
| 空值|空值|第0页|
最初,我的语句中有一个左外部连接,所以我将其切换为内部连接,希望得到一个空集。

  • 附录:* 我尝试使用NULLIF自己解决这个问题,因此:
SELECT WORKORDERS.ID
    , WORKORDERS.QUANTITY AS NOMINAL_QTY
    , NULLIF(COUNT(ITEMSINWORKORDERS.WORKORDER), 0) AS ENTERED_QTY
FROM WORKORDERS JOIN ITEMSINWORKORDERS ON
    ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
WHERE WORKORDERS.QUANTITY >
    ( SELECT COUNT( ITEMSINWORKORDERS.WORKORDER )
    FROM WORKORDERS INNER JOIN ITEMSINWORKORDERS ON
        ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
    )

我得到的是令人沮丧的:
| 识别码|标称_数量|已输入_数量|
| - -|- -|- -|
| 空值|空值|空值|

bis0qfac

bis0qfac1#

我不知道你在说什么,因为你的字典里没有争吵。
但要使计数工作,您需要GROUP BY
第一章

  • db〈〉小提琴

相关问题