[英]mySQL - Nested Select return list?
我正在尝试编写一些mySQL,但是今天大脑似乎无法正常工作。 我有两个表,结构如下。
表1: ID,名称,详细信息
表2: id,类型,值
id链接两个表。
因此,我要尝试执行的操作类似于以下内容,其中我基于嵌套选择的结果返回记录。
SELECT * FROM table1 WHERE name = 'someName' AND id = (SELECT id FROM table2 WHERE type = 'type1')
有人有想法么?
试试这个作为解决方案
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id
AND table2.type = 'type1'
WHERE table1.name = 'someName'
这是JOIN
的作用:
SELECT * FROM table1 JOIN table2 USING (id)
WHERE type = 'type1' AND name = 'someName'
顺便说一句,据我所知,除非id
可以重复,否则没有理由将它们放在单独的表中,这可能是不好的。
该查询是从右到左执行的。 它从table2返回类型='type1'的行,可能是1或更多行,然后从内部查询(table2)的结果执行第一个查询(外部),并返回ID为内部查询(table2)的结果中存在外部查询(table1),如果没有结果,查询引擎将终止查询;如果有结果,它现在将基于where子句(name ='someName' )(外部表(表1)),如果找到结果,则返回结果,否则查询引擎将在此处终止。
基本上,我们按此顺序编写查询; 通过排序从中选择组
但是处理顺序是这样的; 通过选择顺序从哪里分组
当查询引擎执行查询时,它将经过一个或多个表的每个阶段作为输入,并返回一个虚拟表作为输出,查询的一个阶段的输出就是查询的下一阶段的输入。
希望这可以帮助您更好地了解查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.