首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部联接+ IN条件不工作

问内部联接+ IN条件不工作
EN

Stack Overflow用户
提问于 2013-08-17 19:53:36
回答 1查看 129关注 0票数 0

我有两张桌子:问题和测验。

小测验是一系列的问题。

问答表如下所示:

QuizdId x QuestionIds (NVARCHAR50)

代码语言:javascript
复制
  1    | 1,2,3,4,5
  2    | 6,7,8,9

试题表的结构不相关。它的主键是ID (整数)

对于给定的问题Id,我希望选择所有的问题数据

此SQL不工作(会产生语法错误)。

代码语言:javascript
复制
SELECT qs.* FROM Questions AS qs
INNER JOIN Quiz AS qz on qs.ID IN (qz.QuestionIds)
WHERE qz.QuizId = 2;

#1064 -您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以获得在“qz.QuestionIds”附近使用的正确语法,其中qz.QuizId =2

下面的SQL没有给出预期的结果。它只给出了一个ID为6的问题。我想原因是QuestionIds (在问答表中)是nvarchar字段,ID (在问题表中)是整数。

代码语言:javascript
复制
SELECT * FROM Questions WHERE ID IN (SELECT QuestionIds FROM Quiz WHERE QuizId = 2)

我该怎么办?

我想通过SQL /过程/例程来提取它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-17 19:55:59

您可以使用FIND_IN_SET()连接两个表,

代码语言:javascript
复制
SELECT  qs.*
FROM    Questions qs
        INNER JOIN Quiz qz
            ON FIND_IN_SET(qs.ID, qz.QuestionIDs) > 0
WHERE   qz.QuizID = 2

但我建议的方法是把你的桌子标准化成3桌的设计。

试题表

  • QuestionID (PK)
  • QuestionText
  • 其他专栏..。

测验表

  • QuizID (PK)
  • 其他专栏..。

Quiz_Question表

  • QuestionID (FK) --带QuizID的主键
  • QuizID (FK)

如果您使用的是3表设计,则查询如下所示:

代码语言:javascript
复制
SELECT  qs.*
FROM    Questions qs
        INNER JOIN Quiz_Questions qq
            ON qq.QuestionID=qs.ID
WHERE   qq.QuizID = 2
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18292760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档