mySQL - 嵌套选择返回列表?

时间:2013-12-12 14:52:03

标签: mysql

我正在尝试编写一些mySQL但是大脑似乎今天没有工作。我有两个表,具有以下结构。

表1: ID, 名称, 细节

表2: ID, 类型, 值

id链接两个表。

所以我要做的就是以下内容,我根据嵌套选择的结果返回一条记录。

SELECT * FROM table1 WHERE name = 'someName' AND id = (SELECT id FROM table2 WHERE type = 'type1')

有人有什么想法吗?

3 个答案:

答案 0 :(得分:0)

尝试将其作为解决方案

SELECT * 
FROM table1 
INNER JOIN table2 
  ON table1.id = table2.id 
  AND table2.type = 'type1' 
WHERE table1.name = 'someName'

答案 1 :(得分:0)

这是JOIN的用途:

SELECT * FROM table1 JOIN table2 USING (id)
WHERE type = 'type1' AND name = 'someName'

顺便说一句,据我所知,除非id可以复制,否则没有理由将它们放在单独的表中,这可能是坏的。

答案 2 :(得分:0)

该查询从右到左执行。它返回table2中的行,其中type ='type1',可能是1行或更多行,然后它执行第一个查询(外部)关闭内部查询(table2)的结果并返回所有来自其中的id的行外部查询(table1)存在于内部查询(table2)的结果中,如果没有结果,查询引擎终止查询,如果有结果,它现在将根据where子句(name ='someName')评估这些结果)如果找到结果,则返回外部查询(table1),否则查询引擎会终止。

基本上我们按此顺序编写查询; 选择 从 哪里 通过...分组 有

订购

然而处理顺序是这样的; 从 哪里 通过...分组 有 选择

订购

当查询引擎执行查询时,它会在一个或多个表上的每个阶段作为输入,并返回一个虚拟表作为输出,查询的一个阶段的输出是下一阶段的输入。查询。

希望这有助于您更好地理解查询。