我正在尝试编写一些mySQL但是大脑似乎今天没有工作。我有两个表,具有以下结构。
表1: ID, 名称, 细节
表2: ID, 类型, 值
id链接两个表。
所以我要做的就是以下内容,我根据嵌套选择的结果返回一条记录。
SELECT * FROM table1 WHERE name = 'someName' AND id = (SELECT id FROM table2 WHERE type = 'type1')
有人有什么想法吗?
答案 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),否则查询引擎会终止。
基本上我们按此顺序编写查询; 选择 从 哪里 通过...分组 有
订购然而处理顺序是这样的; 从 哪里 通过...分组 有 选择
订购当查询引擎执行查询时,它会在一个或多个表上的每个阶段作为输入,并返回一个虚拟表作为输出,查询的一个阶段的输出是下一阶段的输入。查询。
希望这有助于您更好地理解查询。