【问题标题】:Getting 1054 Unknown Column Error in MySQL在 MySQL 中获取 1054 未知列错误
【发布时间】:2021-05-27 05:27:07
【问题描述】:

运行以下查询时,我收到 1054 错误,指出字段列表中的未知列是“rct.trial_id”。但据我所知,我的语法是正确的。任何帮助将不胜感激!

select 
r.id,
rv.segment_cytoband,
rv.variant_category,
rv.gene,
rv.variant,
ra.sensitive_tier1,
ra.contraindicated_tier1,
ra.sensitive_tier2,
ra.contraindicated_tier2,
rv.cdna,
rv.type as 'Variant Type',
r.last_published,
r.status,
spm.property_name,
sp.property_value as 'oncotreeCode',
r.tumor_cellularity,
s.lims_sample_id,
sr.sample_run_lims_id,
count(distinct rct.trial_id) as 'No. of Trials 1',
count(distinct ract.trial_id) as 'No. of Trials 2'
from report r
LEFT JOIN report_variants rv ON r.id = rv.report_id
LEFT JOIN report_assays ra ON r.id = ra.report_id
LEFT JOIN report_samples rs ON r.id = rs.report_id
LEFT JOIN sample_run sr ON rs.sample_run_id = sr.id
LEFT JOIN sample s ON sr.sample_id = s.id
LEFT JOIN run rn ON sr.run_id = rn.id
LEFT JOIN sample_properties_master spm ON rn.run_combination_id = spm.run_combination_id
LEFT JOIN sample_properties sp ON sr.sample_id = sp.sample_id
LEFT JOIN 
    (select rv.report_id, count(distinct rct.trial_id) from report_clinical_trials rct
        INNER JOIN report_variants rv on rv.id = rct.report_variant_id) as rcttrial ON rv.id = rct.report_variant_id
LEFT JOIN
    (select ra.report_id, count(distinct ract.trial_id) from report_assays_clinical_trials ract
        INNER JOIN report_assays ra on ra.id = ract.report_assay_id) as racttrial ON ra.id = ract.report_assay_id
where r.status = 'REPORT EXPORTED' 
having spm.property_name like 'oncotreeCode';

【问题讨论】:

  • 您不能从主查询访问子查询中的表。
  • Rct 别名是在子查询中定义的,因此您必须在外部查询中使用子查询的别名。
  • 我尝试了 Barmar 下面建议的查询,但出现 1054 错误,即 rct.report_report_variant_id 上有一个未知列。我相信这是带有子查询的 LEFT JOIN 所在的位置。我试图做 rv.id = rcttrial.report_variant_id 但收到同样的错误
  • 我想我让它工作了。我将在下面发布代码

标签: mysql sql mysql-error-1054


【解决方案1】:
select 
r.id,
rv.segment_cytoband,
rv.variant_category,
rv.gene,
rv.variant,
ra.sensitive_tier1,
ra.contraindicated_tier1,
ra.sensitive_tier2,
ra.contraindicated_tier2,
rv.cdna,
rv.type as 'Variant Type',
r.last_published,
r.status,
spm.property_name,
sp.property_value as 'oncotreeCode',
r.tumor_cellularity,
s.lims_sample_id,
sr.sample_run_lims_id,
rcttrial.count as 'No. of Trials 1',
racttrial.count as 'No. of Trials 2'
from report r
LEFT JOIN report_variants rv ON r.id = rv.report_id
LEFT JOIN report_assays ra ON r.id = ra.report_id
LEFT JOIN report_samples rs ON r.id = rs.report_id
LEFT JOIN sample_run sr ON rs.sample_run_id = sr.id
LEFT JOIN sample s ON sr.sample_id = s.id
LEFT JOIN run rn ON sr.run_id = rn.id
LEFT JOIN sample_properties_master spm ON rn.run_combination_id = spm.run_combination_id
LEFT JOIN sample_properties sp ON sr.sample_id = sp.sample_id
LEFT JOIN 
    (select rv.report_id, count(distinct rct.trial_id) AS count from report_clinical_trials rct
        INNER JOIN report_variants rv on rv.id = rct.report_variant_id) as rcttrial ON r.id = rcttrial.report_id
LEFT JOIN
    (select ra.report_id, count(distinct ract.trial_id) AS count from report_assays_clinical_trials ract
        INNER JOIN report_assays ra on ra.id = ract.report_assay_id) as racttrial ON r.id = racttrial.report_id
where r.status = 'REPORT EXPORTED' 
having spm.property_name like 'oncotreeCode';    

【讨论】:

    【解决方案2】:

    您无法从主查询访问子查询中的表。

    您需要在子查询中为count(distinct rct.trial_id) 提供别名,然后在主查询中使用该别名。 ract.trial_id 也是如此。

    select 
        r.id,
        rv.segment_cytoband,
        rv.variant_category,
        rv.gene,
        rv.variant,
        ra.sensitive_tier1,
        ra.contraindicated_tier1,
        ra.sensitive_tier2,
        ra.contraindicated_tier2,
        rv.cdna,
        rv.type as 'Variant Type',
        r.last_published,
        r.status,
        spm.property_name,
        sp.property_value as 'oncotreeCode',
        r.tumor_cellularity,
        s.lims_sample_id,
        sr.sample_run_lims_id,
        rcttrial.count as 'No. of Trials 1',
        racttrial.count as 'No. of Trials 2'
    from report r
    LEFT JOIN report_variants rv ON r.id = rv.report_id
    LEFT JOIN report_assays ra ON r.id = ra.report_id
    LEFT JOIN report_samples rs ON r.id = rs.report_id
    LEFT JOIN sample_run sr ON rs.sample_run_id = sr.id
    LEFT JOIN sample s ON sr.sample_id = s.id
    LEFT JOIN run rn ON sr.run_id = rn.id
    LEFT JOIN sample_properties_master spm ON rn.run_combination_id = spm.run_combination_id
    LEFT JOIN sample_properties sp ON sr.sample_id = sp.sample_id
    LEFT JOIN 
        (select rv.report_id, count(distinct rct.trial_id) AS count from report_clinical_trials rct
            INNER JOIN report_variants rv on rv.id = rct.report_variant_id) as rcttrial ON rv.id = rct.report_variant_id
    LEFT JOIN
        (select ra.report_id, count(distinct ract.trial_id) AS count from report_assays_clinical_trials ract
            INNER JOIN report_assays ra on ra.id = ract.report_assay_id) as racttrial ON ra.id = ract.report_assay_id
    where r.status = 'REPORT EXPORTED' 
    having spm.property_name like 'oncotreeCode';
    

    【讨论】:

    • 谢谢!但是在运行它时,现在我在“ON”子句的 rct.report_variant_id 上收到错误 1054
    • 我想我现在可以使用它了。我将在下面发布代码
    猜你喜欢
    • 2016-04-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多