我是一个完整的SQL小白,而且不知道如何利用连接。如果有人可以帮助这个查询,那会很好。SQL查询,以便列结果
我有一个表questions
它包含两列:queid
和que
。 另一个表options
包含问题的相应选项,并且具有列optionid
,queid
, option
。
我该如何做SELECT
声明,以便我可以根据queid
将两个表连接在一起?
喜欢的东西:
SELECT * from questions,options where queid=1
我是一个完整的SQL小白,而且不知道如何利用连接。如果有人可以帮助这个查询,那会很好。SQL查询,以便列结果
我有一个表questions
它包含两列:queid
和que
。 另一个表options
包含问题的相应选项,并且具有列optionid
,queid
, option
。
我该如何做SELECT
声明,以便我可以根据queid
将两个表连接在一起?
喜欢的东西:
SELECT * from questions,options where queid=1
你应该试试这个:
SELECT que.*, opt.* FROM questions que
INNER JOIN options opt ON que.queid = opt.queid
WHERE que.queid = 1
INNER JOIN
负载问题和选项有每个表中至少一个corresponing记录。
如果你需要得到所有问题(甚至没有选项的),你可以使用
SELECT que.*, opt.* FROM questions que
LEFT JOIN options opt ON que.queid = opt.queid
WHERE que.queid = 1
LEFT JOIN
总是加载的问题,如果他们有其他选择,他们的选择也;如果不是,你会得到NULL的选项列。
可以由
SELECT * FROM questions q JOIN options o ON q.queid=o.queid WHERE q.queid=1
SELECT *
FROM questions
JOIN options ON questions.queid = options.queid
WHERE questions.queid = 1
SELECT q.*,o.* FROM questions q
JOIN options o ON q.queid = o.queid
WHERE q.queid = 1
它应该是'q.queid = o.queid'。 –
是的,我不注意 – Oyeme
可以使用他们的共同点列连接两个相关的表。
你的情况你可以写:
SELECT * FROM Questions as Q INNER JOIN Options O ON Q.queid=O.queid WHERE Q.quid=1
您也可以省略其中相似的这一部分:
SELECT * FROM Questions as Q INNER JOIN Options O ON Q.queid=O.queid AND Q.quid=1
有不同类型的连接:
INNER
外(左,右,全)
通过内部联接,您的意思是只返回两个表中共有的记录 当您使用外部联接时,给定端上的所有记录都是返回加上在另一端具有相应值的记录,否则,而不是另一端值将会变为null。
我不习惯在clause'消息'不明确的列queid。 – xbonez
@xbonez:也许你在编辑它时正在阅读我的答案。现在试试 – Marco