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

时间:2019-03-07 02:18:18

标签: mysql

a,b没有直接关系。

a,b与结果有什么关系?

select * from a,b where b.id in (1,2,3)

你能解释一下sql吗?

2 个答案:

答案 0 :(得分:1)

由于您尚未指定ab之间的关系,因此会产生叉积。等效于:

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

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

答案 1 :(得分:1)

您使用的是Multitable SELECT

  

Multitable SELECT (M-SELECT)与加入操作相似。您   从不同的表中选择值,请使用WHERE子句来限制   返回的行,并将生成的单个表发送回给   查询的发起者。

     

M-SELECT的区别在于它将返回乘法表   作为结果集。
有关更多详情,请访问https://dev.mysql.com/worklog/task/?id=358

换句话说,您查询的是:

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