Sql 有没有办法组合这些查询

Sql 有没有办法组合这些查询,sql,Sql,将两个查询合并为一个查询是否有效?优势和劣势是什么? 有人能帮我把这两个问题结合起来吗 SELECT quiz_id from questions WHERE question = 10 SELECT quiz_number FROM quizzes WHERE quiz_id = 5 测验id与问题有1对多关系。因此,对于一个特定的问题,只有一个测验id,但一个测验id下最多可以有20个问题。不太确定“组合”是什么意思,可能是指子选择/子查询?在这种情况下,请尝试: --- IN s

将两个查询合并为一个查询是否有效?优势和劣势是什么? 有人能帮我把这两个问题结合起来吗

SELECT quiz_id from questions WHERE question = 10

SELECT quiz_number FROM quizzes WHERE quiz_id = 5

测验id与问题有1对多关系。因此,对于一个特定的问题,只有一个测验id,但一个测验id下最多可以有20个问题。

不太确定“组合”是什么意思,可能是指子选择/子查询?在这种情况下,请尝试:

---    IN syntax
SELECT quiz_number FROM quizzes WHERE quiz_id IN
       (SELECT quiz_id FROM questions WHERE question = 10);

---    = syntax. This will work only if the subquery returns one value 
SELECT quiz_number FROM quizzes WHERE quiz_id = 
       (SELECT quiz_id FROM questions WHERE question = 10);
可以使用别名

SELECT question.quiz_id, quiz.quiz_number from questions question,quizzes quiz WHERE question.question = 10 and quiz.quiz_id =5

假设两个已发布查询的关系,并且第二个查询中的值5是第一个查询的结果:

SELECT quiz_number FROM quizzes qz
INNER JOIN questions qu on qu.quiz_id = qz.quiz_id
WHERE question = 10

除非两个表之间存在关系,否则组合没有多大意义。您能提供表的布局和所涉及的逻辑吗?事实上,对我来说,在“问题=10”的地方询问测验id的想法意味着你要为每一个有第十个问题的测验获取id。这样做的目的似乎很奇怪。但是,如果问题在所有测验中都有唯一的id,也就是说,这是一个一对一的问题到测验的id映射,这就更有意义了。@Gurnor我不清楚您想要实现什么。第二个查询中的值5真的是编译时常量还是第一个查询的结果?@sparketing-quick_id与问题有1对多的关系。因此,对于一个特定的问题,只有一个测验id,但一个测验id下最多可以有20个问题。@Gurnor:为了清楚起见,还有一些必要的信息。假设你有一个测验,测验id=1,有三个问题,测验id=1…3,你还有第二个测验,测验id=2,也有三个问题。小测验的问题也会是1..3号吗?或者是4..6?你要找的操作是内部连接。不要用在这些东西上。@Tomalak:为什么?如果他只想从测验中检索文件,IN或EXISTS比JOIN更合适,除非使用MySQL,其中x在SELECT y FROM z中还没有完全优化。@Joel:quizid在SELECT中。。。和quizid=选择。。。都是有效的SQL语法,在Postgres和MySQL中都可以使用。不过它们有不同的含义和结果。第二个只需要子选择中的一行,否则会发生运行时错误。我正在使用MYSQL,我尝试了in和inner join查询。。。内部连接比连接两个查询的语句中多花费了.00002秒,实际上多了.00002秒。别担心,没有人能分辨出我所知道的区别,只是说。。。我是新来的,我不知道什么是更好的或使用更多。。。如果你能告诉我那太好了?