mysql - 我将如何修复此多表查询以仅选择所需的行?

标签 mysql

我正在尝试进行查询,以选择来自特定用户和该用户的所有 friend 的所有消息。这个查询几乎可以工作,但第一部分会导致问题,因为它最终选择了“ friend ”中的所有行。我在想我需要使用某种 JOIN 才能根据需要使用它,但我没有足够的 JOINS 经验,在试验了一个多小时后无法完成这项工作。

SELECT a.* 
  FROM messages a, friends b 
 WHERE a.username = '$user' OR b.username = '$user' && b.friend = a.username 
 ORDER BY a.id DESC 
 LIMIT 5

最佳答案

也许这样的事情会起作用:

   SELECT m.*
     FROM messages m
LEFT JOIN friends f
       ON m.username = f.username
    WHERE m.username = "$user"
       OR f.friend = "$user"

关于mysql - 我将如何修复此多表查询以仅选择所需的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4772391/

相关文章:

满足条件的 PHP 查询必须出现在第二个表中

php - Magento 加入不同的表

php - mysql中的if语句不忽略字段

php - 多对多 vs 一行

mysql - 将 MySQL 数据库链接到 MS Access 时如何包含关系?

mysql - 导致 "the server is gone away"消息的简单查询

mysql - 在MYSQL中查找重复值中的关键字

mysql - 我如何使用 Count 来计算每个玩家的行数

java - 使用 jdbc 通过 PrepareStatement 为 DATETIME 字段插入 null

MYSQL。 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 无法正常工作