MySQL如何选择具有不正确ID的记录?

时间:2016-07-12 14:46:44

标签: mysql select

我的表格中有一个标有primary_keysummary_id的列。每条记录中第二个字段summary_id中的值映射到另一条记录的primary_key字段。第三个字段template_id。我需要选择那些记录:

  1. template_id是一定值。让我们说4。
  2. primary_key至少匹配其中一条记录' summary_id字段。
  3. 请不要告诉我重新设计表格。我的下一个项目将有更好的设计,但我现在没有时间。我需要使用一个或多个查询来执行此操作;越少越好。理想情况下,有一种方法可以通过一个查询执行此操作,但如果需要更多查询,我可以。

    enter image description here

    这是我对自己的查询的了解程度。 (我知道它非常缺乏,这就是我需要帮助的原因。)

    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');
    
    SELECT
        esjp_content.primary_key, esjp_content.template_id, esjp_content.content, esjp_content.summary_id
    FROM
        esjp_content
    WHERE
        esjp_content.template_id = 4;
    

    我需要summary_id指向的记录。例如,如果summary_id为90,那么我需要primary_key为90的记录。

    enter image description here

2 个答案:

答案 0 :(得分:1)

您正在寻找至少有一行,其中summary_id =您的主键。像这样。

SELECT *
FROM esjp_content c
WHERE template_id = 4
AND EXISTS (SELECT 1 FROM esjp_content c2 WHERE c2.summary_id = c.primary_key)

答案 1 :(得分:0)

您可以使用两个ID加入同一个表:

SELECT
    t1.*
FROM
    esjp_content t1
INNER JOIN esjp_content t2 ON t1.summary_id = t2.primary_key
WHERE
    t1.template_id = 4