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

标签 mysql sql

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

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

  • regDB 包含学生姓名、父亲姓名、regno。请注意,regno 是唯一的数字,等于每个学生的 rollnum。即所有学生的 regno=rollnum 。 搜索查询2: 从 db1.regDB 中选择父亲姓名、母亲姓名、子女年龄、regno,其中 regno='1'

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

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

换句话说,构建 query1 的结果,将 rollnum 的结果作为 regno 输入到 query2 中,并显示两个查询的组合结果。

这可以吗?我对 SQL 不了解,因此需要一些帮助。

提示: 可以使用以下方式连接两个查询:

SELECT * FROM (从 db1.stuDB 选择年龄、出生日期、rollnum,其中age='x') CROSS JOIN (从 db1.regDB 选择父亲姓名、母亲姓名、子女年龄、regno,其中 regno='1 ')。不知何故,我想将 rollnum 的输出从该查询的前半部分作为 regno 提供到该查询的后半部分自动查询。

最佳答案

解决方法如下:

选择年龄、出生日期、rollnum、父亲姓名、母亲姓名、子女年龄、regno 来自 db1.stuDB 加入db1.regDB ON db1.regDB.regno = rollnum WHERE(年龄 = 'x')

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

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

关于mysql - 如何将一个查询的搜索输出作为值提供给另一查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690868/

相关文章:

PHP/MySQL/Jquery - 构建关联数组并使用 JQuery $.each 输出它

mysql - SQL 连接结果全文

sql - 获取连接的逆?

mysql - varchar 或 text 表示长度仅为 360 个字符的字符串

mysql - vb.net,mysql插入日期

mysql - 选择包含特定字符的行

sql - 选择列中包含列表中所有值的所有行

sql - 尝试根据另一个表获取结果 - WHERE 中不允许使用聚合函数

sql - 我可以使用什么SQL查询来获取基于某一列的每组的第一条记录?

c# - 从 C# 将 GUID 存储在 MySQL 中