【问题标题】:SQL Left Join Problem (All lines is not coming)SQL左连接问题(所有行都不来)
【发布时间】:2021-07-14 17:58:13
【问题描述】:

表格如下:

用户表(表名:users):

[用户表]

好友表(表名:好友):

[好友表]

我的 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

离开下面的列:

[离开栏目]

如何解决这个缺失的查询?请帮帮我。

【问题讨论】:

  • 请分享更多详细信息 - “缺少查询”是什么意思?
  • 我的 sql 代码无法正常工作。结果,返回 1 行缺失数据。红色标记的地方(问号)没有出现。

标签: mysql sql join left-join missing-data


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,仍然没有查询的最后一行。一共应该返回7行结果,但是返回了6行结果。
  • @PhpMaster 您的朋友表中只有 6 行,为什么您期望 7 行?
  • 查看friends表的最后一行,可以看到。 Friends 表中前 5 个条目中的第 1 个将其他成员添加为好友。在最后一行,数字 7 将数字 1 添加为好友。因此。
猜你喜欢
  • 2023-03-05
  • 2011-09-25
  • 2014-06-04
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
相关资源
最近更新 更多