MySQL How to deal with Error: Subquery returns more than 1 row?

MySQL How to deal with Error: Subquery returns more than 1 row?

我正在尝试编写一个查询,它从满足某些 complex/nested 条件的 table 中选择所有记录。我认为查询中的逻辑是正确的,但我 运行 遇到的问题是最终子查询(参见示例)返回多于 1 行,这正是我想要的 expect/need。那么,问题是,我该如何处理呢? MySQL 是否支持某种循环或设置标准?

SELECT c.primary_key
FROM esjp_content c
WHERE template_id = (
    SELECT DISTINCT esjp_content.template_id
    FROM esjp_content
    INNER JOIN esjp_hw_config ON esjp_content.template_id = esjp_hw_config.proc_id
    INNER JOIN esjp_assets ON esjp_hw_config.primary_key = esjp_assets.hw_config_id
    WHERE
        esjp_content.summary_id > 0
            AND
        (esjp_assets.asset_label='C001498500' OR esjp_assets.asset_label='H0065' OR esjp_assets.asset_label='L0009')
    )
        AND
    EXISTS (SELECT 1 FROM esjp_content c2 WHERE c2.summary_id = c.primary_key)
        AND
    c.primary_key != (
        /* This subquery returns more than 1 result. */
        SELECT esjp_signoffs.content_id
        FROM esjp_signoffs
        INNER JOIN esjp_assets ON esjp_signoffs.asset_id = esjp_assets.primary_key
        WHERE
            esjp_signoffs.user_id=1
                AND
            (esjp_assets.asset_label='C001498500' OR esjp_assets.asset_label='H0065' OR esjp_assets.asset_label='L0009')
    );

有关我的 table 的更多详细信息,请参阅我今天早些时候制作的 。 (这是一个完全不同的问题。)

如果我理解正确

   c.primary_key != (
    /* This subquery returns more than 1 result. */
    SELECT esjp_signoffs.content_id
    FROM esjp_signoffs
    INNER JOIN esjp_assets ON esjp_signoffs.asset_id = esjp_assets.primary_key
    WHERE
        esjp_signoffs.user_id=1
            AND
        (esjp_assets.asset_label='C001498500' OR esjp_assets.asset_label='H0065' OR esjp_assets.asset_label='L0009')
);

return 不止一行.. 你可以使用 not in ..

  c.primary_key not in (

 inner join  (  ..... ) t on c.primary_key != t.the_column_you_need