mysql - 2 个表之间的内部连接 ​​- 奇怪的语法?

标签 mysql sql

看下面的SQL..

SELECT t1.*
FROM table1 t1
INNER JOIN table2 t2 ON t1.user_id = t2.id, tables3 t3
WHERE t3.id = 999 

这里有什么join?在 t1 和 t3 之间?我的意思是逗号是什么意思?

最佳答案

FROM 子句中的

,CROSS JOIN

的已弃用简写

编写查询的更好方法是使用显式CROSS JOIN:

SELECT t1.*
FROM table1 t1 INNER JOIN
     table2 t2
     ON t1.user_id = t2.id CROSS JOIN
     tables3 t3
WHERE t3.id = 999 ;

如所写,查询没有意义。假设 t3.id = 999 为真且出现一次,那么这相当于:

SELECT t1.*
FROM table1 t1 INNER JOIN
     table2 t2
     ON t1.user_id = t2.id;

如果该值不存在,则不会返回任何行。

关于mysql - 2 个表之间的内部连接 ​​- 奇怪的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42671375/

相关文章:

php, mysql 如果$a 在数据库中

php - mysql 查询没有收到正确的响应...或者其他什么

php - 将 Sql 数据导出为 PDF

php - Laravel 多对多关系获取数据

sql - 在事务内部或外部打开和关闭游标以及如何在事务失败时关闭游标

mysql - MariaDB/mySQL 分组嵌套 SQL 结果无法像 MSSQL 中那样工作?

php - PHP中遇到的非数字值——电子商务网站

mysql - 查找 AM Times 并更新?

sql - 将 SQL 查询限制为查询未使用的表中的某些字段

java - 如何让 JDBC MYSQL 中的主键区分大小写?