【问题标题】:Comparing two columns in two different tables?比较两个不同表中的两列?
【发布时间】:2014-10-13 09:03:28
【问题描述】:

如果问题的语法和框架不符合标准,首先道歉。

我有一个 MySql 数据库。我有一个表格答案,其中包含 idquestion、userAnswer、userEmailAddress 作为列。

另一个表 multi_choice_pool,其中包含 idQuestion、answer_all。

每个 answer.userEmailAddress 都有多个 idQuestion 和 userAnswer 条目。

我想在答案表中获取 userEmailAddress,其中该 userEmailAddress 的 id 和 answer 等于 multi_choice_pool 的 iq 和 answer。

这是我写的:

Select answer.userEmailAddress from answer 
where (answer.idQuestion=multi_choice_pool.idQuestion) AND  
(answer.userAnswer=multi_choice_pool.answer_all);

这给了我一个错误:“where 子句中的未知列 'multi_choice_pool'。

语法错了吗?或者查询本身是错误的?还是我的方法不对?能否指正并提出建议?

【问题讨论】:

  • 使用 '_' 分隔对象名称是一个很好的约定,而不是使用大小字母的组合。
  • 要使用表:“multi_choice_pool”,它必须包含在你的“select”中,即“select answer.userEmailAddress from answer, multi_choice_pool where .....”

标签: mysql sql


【解决方案1】:
Select answer.userEmailAddress 
from answer left join multi_choice_pool
on answer.idQuestion = multi_choice_pool.idQuestion 
and answer.userAnswer = multi_choice_pool.answer_all;

【讨论】:

    【解决方案2】:

    看来您不需要WHERE 子句。

    但你需要JOIN 一个:

    SELECT answ.userEmailAddress 
    FROM answer answ
    LEFT OUTER JOIN multi_choice_pool mcp 
        ON answ.idQuestion = mcp.idQuestion
        AND answ.userAnswer = mcp.answer_all
    

    这里是MySQL documentation for JOIN

    【讨论】:

    • 它给了我一个错误:'Unknown column'answer.userEmailAddress' in field list'。我什至可以以这种方式访问​​“TableName.ColumnName”吗?因为该列存在。
    • answ.userEmailAddress
    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2021-07-23
    相关资源
    最近更新 更多