mysql - MYSQL 上的连接语法

标签 mysql sql join

对于 MYSQL 语法,我了解联接是 FROM table JOIN table ON table.column = table.column 我遇到过其他形式的联接,这些联接不仅不遵循该语法,而且两列不相关,而是相互补充下面是彼此的例子

 from coordinates as cod join
      geofences as geo
      on st_contains(geo.simplified_shape, cod.request_point)

就上下文而言,这是说 st_contains,其中 A 包含 B,所以如果请求点确实位于地理围栏形状中,那么本质上这是否满足连接?我知道这是一个有效的语法,这个问题更多地涉及是否有人不仅可以阐明括号内的连接,以及何时可以适用,而不是 = 符号是否仅在这些特定情况下以及我的思路是否正确表可以连接不是因为值相等,而是因为它满足 st_contains 条件,因此例如,如果您使用 st_contains 之外的其他内容,那会是什么样子?

最佳答案

这实际上相当于:

on st_contains(geo.simplified_shape, cod.request_point) <> 0

这里发生的是 MySQL 正在将结果转换为“ bool 值”。如果函数返回一个数字,则任何非零数字为“真”,零为“假”。

如果返回值是字符串,则根据前导数字将该字符串转换为数字。如果没有前导数字,则该值为零。然后将其视为 bool 值。

关于mysql - MYSQL 上的连接语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984042/

相关文章:

SQL:like v.equals 性能比较

mysql - 无法在左连接 MySQL 中看到空值

MySQL - 查询性能问题 - 花费 25 秒以上

mysql - 我如何在mysql中同时将数据从源插入到两个或多个表...有什么方法可以插入

sql - SQL语句中的 "set+0"是做什么用的?

python - 使用 python 将两个文件中的每一行连接为一行

mysql - 需要单个输出行上多行的数据。子查询?

php - mysql where语句没有显示正确的结果

java - 错误 1064 : SQL syntax error

php - SQL:具有多个子值的外键