如何将一个查询的搜索输出作为值提供给另一个查询

时间:2016-01-09 07:24:37

标签: mysql sql

假设一个教室数据库。它有两个表(stuDB和regDB):

  • stuDB包含age,dob,rollnum列。 rollnum是分配给每个学生的唯一数字(1到100),其余属性(年龄,DOB)不是唯一的。 搜索查询1: 从db1.stuDB中选择age,DOB,rollnum,其中age ='x'< ---这将返回所有x岁学生的年龄,DOB和唯一rollnum的表格。

  • regDB包含studentname,fathername,regno。请注意,regno是唯一的数字,等于每个学生的rollnum。即regno =所有学生的rollnum。 搜索查询2: 从db1.regDB中选择fathername,mothername,childage,regno,其中regno ='1'

我首先运行query1,确定rollnum的值,将rollnum的结果作为regno手动输入query2。因此,我必须为每个学生手动运行查询2.

我想以某种方式将两个查询联系起来,并将结果显示为单个搜索结果,显示所有内容: studentname,fathername,regno,fathername,mothername,childage,regno ,对于我搜索条件年龄= 8。

换句话说,构建query1的结果,将rollnum的结果作为regno提供给query2,并显示两个查询的组合结果。

能做到吗?我不了解SQL,所以需要一些帮助。

提示: 可以使用以下命令连接两个查询:

SELECT * FROM(选择年龄,DOB,来自db1.stuDB的rollnum,其中age ='x')CROSS JOIN(从db1.regDB中选择fathername,mothername,childage,regno,其中 regno = '1 “ )。不知何故,我想从此查询的前半部分将 rollnum 的输出作为 regno 提供给此后半部分自动查询。

1 个答案:

答案 0 :(得分:0)

这就是解决方法:

SELECT age,DOB,rollnum,fathername,mothername,childage,regno 来自db1.stuDB 加入db1.regDB ON db1.regDB.regno = rollnum WHERE(年龄='x')

* WHERE()可以是我想要使用的任何搜索条件。

谢谢amdixon。当然,这只是一个例子。我的实际数据库完全不同,与学校无关。