【问题标题】:Select SQL Query for two table? [closed]为两个表选择 SQL 查询? [关闭]
【发布时间】:2014-03-17 19:23:20
【问题描述】:

我有两张桌子

表 A: 内容问题、选项和正确答案

表 B : 此表用于在给定时间内回答问题的时间。 此表具有 Question_Id 字段,该字段具有问题 ID 或零。零表示如果在表 B 中找不到表 A 的问题 ID,则默认时间将为表 B 的 Question_Id=0 > 5 Min

现在我想要查询中的结果表等数据。通过使用 Select Query with Join 我得到了问题详细信息,这些详细信息与问题 ID (1,2,4) 相匹配,意味着问题 3,5,6 行没有在结果表中显示。

请建议应该写什么 sql 查询,以便我可以得到类似结果表内容的结果。

【问题讨论】:

  • 很抱歉,这不是您的答案,但表 B 看起来是多余的。为什么不直接将时序语句添加到表 A 中?
  • 使用 rep > 1000 你应该知道你需要展示你已经尝试过的东西。此外,您的数据不一致。 B 中没有针对问题 ID 3、5 和 6 的行,因此鉴于其他两个,结果表是不可能的。

标签: mysql sql join


【解决方案1】:

试试这个

SELECT Q.QuestionID,Q.Question,Q.Options,QAnswer,
       CASE WHEN Q.QuestionID NOT IN (SELECT QuestionID FROM Table2) THEN '5 Min'
            ELSE T.TimingStatement
       END [TimingStatement]
FROM Table1 Q
JOIN Table2 T ON Q.QuestionID = T.QuestionID

【讨论】:

  • 当我们申请Q.QuestionID=T.QuestionID时,不会列出3,4,6
  • 你可以使用 Outer Join 对吗??
【解决方案2】:

我将您的表格更改为小而简单的表格,您可以在以下位置看到结果:

SQL Fiddle

或试试这个查询:

SELECT t1.questionid, 
       t1.question, 
       t1.options, 
       t1.answer, 
       COALESCE(t2.timingstatement, '5 Min') TimingStatement 
FROM   tablea t1 
       LEFT OUTER JOIN tableb t2 
                    ON t1.questionid = t2.questionid; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多