Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用中列出的多个表解释MySQL查询_Mysql - Fatal编程技术网

使用中列出的多个表解释MySQL查询

使用中列出的多个表解释MySQL查询,mysql,Mysql,a、 二者没有直接关系 a,b和结果有什么关系 从a,b中选择*,其中b.id位于(1,2,3) 你能解释一下sql吗?因为你没有指定a和b之间的关系,这就产生了一个叉积。这相当于: SELECT * FROM a CROSS JOIN b WHERE b.id IN (1, 2, 3) 它将把a中的每一行与b中选定的三行合并。如果a有100行,结果将是300行。您使用的是多表选择 多表选择(M-SELECT)与连接操作类似。你 从不同的表中选择值,使用WHERE子句限制 返回的行并将生成的单

a、 二者没有直接关系

a,b和结果有什么关系

从a,b中选择*,其中b.id位于(1,2,3)


你能解释一下sql吗?

因为你没有指定
a
b
之间的关系,这就产生了一个叉积。这相当于:

SELECT *
FROM a
CROSS JOIN b
WHERE b.id IN (1, 2, 3)

它将把
a
中的每一行与
b
中选定的三行合并。如果
a
有100行,结果将是300行。

您使用的是
多表选择

多表选择(M-SELECT)
与连接操作类似。你 从不同的表中选择值,使用
WHERE
子句限制 返回的行并将生成的单个表发送回 查询的发起人

M-SELECT
的区别在于,它将返回乘法表 作为结果集
有关更多死亡信息:

换句话说,您的查询是:

SELECT * 
FROM a 
CROSS JOIN b 
WHERE b.id in (1,2,3)

sql简单地说:通过将表
a
b
b.id
等于
1或2或3
的条件连接起来获取所有行。谢谢你的回答。我理解。当你引用另一个站点时,你应该包含一个指向该站点的链接。什么是“返回乘法表”?结果集只是一个表,虽然它包含两个原始表中的行,但这与任何其他联接相同。@Barmar reference link,同意。将更新我的答案。@Barmar“return multiply tables”只是指一个不同于其他连接的交叉连接。在使用
where
子句时,它的工作方式类似于
内部联接。