【问题标题】:How to avoid the duplicate value while joing two tables?连接两个表时如何避免重复值?
【发布时间】:2014-12-27 10:14:23
【问题描述】:

我正在 code-igniter 框架中准备一份调查问卷。每次显示一个问题以供回答。回答的问题被输入到一个临时表中。如果刷新页面,则已回答的问题再次显示。为此,我尝试加入临时表和主表,但它不起作用。我使用了以下查询,

"SELECT a.boxes FROM quest a LEFT JOIN useranswer1 b ON  a.boxes!=b.question"

quest 是主表,useranswer1 是临时表。

结果包含主表中的所有值(quest)。我需要不在useranswer1(临时表)中的值。是否可以使用连接查询或任何其他方法?

【问题讨论】:

    标签: mysql sql select join left-join


    【解决方案1】:

    试试这个:

    SELECT a.boxes 
    FROM quest a 
    LEFT JOIN useranswer1 b ON  a.boxes = b.question
    WHERE b.question IS NULL;
    

    SELECT a.boxes 
    FROM quest a 
    WHERE NOT EXISTS (SELECT 1 
                      FROM useranswer1 b 
                      WHERE a.boxes = b.question);
    

    【讨论】:

    • 嗨,我试过这个查询和它的工作。连同上面的查询,我想检查一个 id 限制。我试过“从不存在的任务 a 中选择 a.boxes(从 useranswer1 中选择 1 b where a.boxes=b.question) and eid=$id limit $offset,$page" 。在这个'eid'是表'quest'中的一个字段。有时这个查询返回空结果集。请帮助!
    【解决方案2】:

    您可以使用带有 NOT IN 子句的子查询,例如:

    SELECT boxes 
    FROM quest
    WHERE boxes NOT IN 
                  (SELECT DISTINCT question
                   FROM useranswer1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多