mysql - 在 JOIN (sql) 上过滤结果的最佳方法是什么

标签 mysql sql join

我很久以前就有一个疑问...过滤 sql 连接条目的最佳方法是什么...我的意思是,在 WHERE 子句或连接的 ON 上更好?

例如,什么更好?此代码段使用 WHERE

SELECT 
    customer.users_id AS CustID, 
    FROM customer 
    LEFT JOIN visit ON customer.users_id = visit.CustID
    WHERE visit.active = 1

或者这另一种方式(过滤器开启):

SELECT 
    customer.users_id AS CustID, 
    FROM customer 
    LEFT JOIN visit ON (customer.users_id = visit.CustID AND visit.active=1)

谢谢。

最佳答案

这取决于情况的类型。这是关于两者的一些文字:-

第一个用作内部联接,没有返回左表中的所有行,包括右表中为 null 的行。 Where 条件返回所有具有 visit 1 的行。意味着它从结果中减少所有这些行,这些行与 1 或 null 行对应到左表

例子:-

custome_id visit
1          1
2          1

第二个返回具有与右表对应的 null 条目的行。

例子:-

custome_id visit
1          1
2          1
3          null
4          null

注意:- 在您的两个语句中,customer_id 不能为 null,因为它只有来自左表的 o/p。

关于mysql - 在 JOIN (sql) 上过滤结果的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593700/

相关文章:

Mysql, 树, 分层查询, 性能

mysql - 我怎样才能得到这个答案+ mysql中的查询

MySQL-比较两个表中的客户 ID 以确定谁没有购买

entity-framework - 对继承的实体使用 Include()

mysql - sql join on string = integer 以在任何 RDBMS 上工作

mysql - 这样的mysql查询该怎么做呢?

MySQL: "order by"内部的 "group by"

mysql - 使用 GROUP BY 时计算空值

SQL:计算自上次成功以来的天数

sql - 连接两个表并获取同一列中的输出数据