我的表格中有一个标有primary_key
和summary_id
的列。每条记录中第二个字段summary_id
中的值映射到另一条记录的primary_key
字段。第三个字段template_id
。我需要选择那些记录:
template_id
是一定值。让我们说4。primary_key
至少匹配其中一条记录' summary_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');
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的记录。
答案 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