当前位置: 首页 > 知识库问答 >
问题:

SQL左联接问题(所有行未来)

云正信
2023-03-14

表列如下:

Users表(表名:Users):

[用户表]

Friends表(表名:Friends):

“好友表”

我的Sql代码:

SELECT
    friend_id,
    friend_adding_id,
    friend_added_id,
    user_id,
    user_name
FROM friends
LEFT JOIN users ON friends.friend_added_id = users.user_id
WHERE
    friend_adding_id = 1
    OR friend_added_id = 1
    AND friend_confirm = 1
ORDER BY friends.friend_id DESC
LIMIT 1, 10

留下下面一栏:

“离开栏”

如何修复此缺失的查询?请帮帮我.

共有1个答案

秦才良
2023-03-14

首先,您缺少了一行而不是列或者不是查询,其次,这是因为与/或优先级。并且具有比或更高的优先级,要使逻辑正常工作,必须通过使用括号给予或更高的优先级:

SELECT
    friend_id,
    friend_adding_id,
    friend_added_id,
    user_id,
    user_name
FROM friends
LEFT JOIN users ON friends.friend_added_id = users.user_id
WHERE
    (friend_adding_id = 1 OR friend_added_id = 1) -- < like this
    AND friend_confirm = 1
ORDER BY friends.friend_id DESC
LIMIT 1, 10
 类似资料:
  • 它还会返回这个表,遗漏一些行(我希望它给出所有流派,而不仅仅是演员在其中扮演角色的流派): 有趣的是,它为“动画”返回了“0”,但为“儿童”或“喜剧”没有行,这是我正在寻找的结果(所有流派都返回了)。我做错了什么?

  • 问题内容: 我在MySQL中有以下查询: 该表有27行,但查询仅返回1行。基于 这个问题, 我认为可能是由于WHERE子句。该表具有字段id,属性,字段,值,其中是第三个表的外键(我不需要从中获取数据)。 有没有一种方法可以从第一个表中选择所有行,包括表#2中字段为23的值(如果没有字段23,则为NULL)? 问题答案: 当然。将WHERE条件移动到JOIN:

  • 问题内容: 我的查询有问题,该查询显示商店列表以及与之关联的产品数量。我已经玩了很长时间的左联接等,但无济于事。这些表具有以下结构: 商店含有表列:, 产品含表列:,,, 查询如下: 我没有去买有0件商品的商店。请问我该如何实现? 基础数据库是MySQL。 谢谢!马耳他 问题答案: 您需要在左侧购物,因为右侧可能没有数据,在本例中为PRODUCT。 不仅如此,您还需要WHERE条件作为LEFT-J

  • 问题内容: 我正在使用SQL Server(我相信是2005)。 我有2列和439行(每行都是唯一的)。 我有35列和数十万行(每行也是唯一的)。 每行都有每小时的观察和其他一些房屋管理信息。现在出于测试目的,我仅对今天的日期(即2013年4月19日)感兴趣。 如果我做: 我得到10526,这是正确的,因为每天有10526个不同的位置,每小时都有观测数据。 我想左连接TableA和TableB ,

  • 问题内容: 我有三个表: 命令 OrderId,int PK CustomerId,与客户之间为int FK,允许为NULL 顾客 CustomerId,int PK CompanyId,将FK转换为Company,不允许为NULL 公司介绍 CompanyId,int PK 名称nvarchar(50) 我想选择所有订单,无论是否有客户,如果有客户,也要选择客户的公司名称。 如果我使用此查询…

  • 问题内容: 我正在尝试使用以下查询获取每天打开的页面数。 我得到的输出是这样的: 问题是,在我的日表中,我有一列包含数字1到30来代表一个月中的日子。我进行了左外部连接,希望在天数列中显示所有天数! 但是我的查询正在这样做,为什么会这样呢? 谢谢大家的帮助。 问题答案: Nanne给出的答案解释了为什么您没有得到期望的结果(您的WHERE子句删除了行),但是却没有解决方法。 解决方案是将WHERE