我是一個完整的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