mysql - 如何从两个不同的表中获取数据

标签 mysql sql

我正在尝试从两个不同的表中获取数据,3 个表的共同点是用户名字段,这是我到目前为止尝试过的方法

SELECT 
    *
FROM
    post f1
        INNER JOIN
    portfolio f2 ON f1.username = f2.username
WHERE
    f1.username IN ('user1' , 'user2')
        OR f2.username IN ('user1' , 'user2');

我想要的是,如果 user1 在 post 表中有发布数据,在 portfolio 表中有投资组合数据,然后获取所有这些详细信息

表格结构

张贴表

-------------------------------------------
| id  | username | content | title | time |
-------------------------------------------
|  1  |   user1  |   eg    | titl  | eg1  |
|  2  |   user2  |   eg    | title | eg2  |
|  3  |   user3  |   eg    | title | eg3  |
|  4  |   user1  |   eg1   | title | eg4  |
|  5  |   user5  |   eg    | title | eg5  |
|  6  |   user6  |   eg    | title | eg6  |
-------------------------------------------

投资组合表

-------------------------------------------
| id  | username |  Image  | title | time |
-------------------------------------------
|  1  |   user1  |   eg    | titl  | eg1  |
|  2  |   user2  |   eg    | title | eg2  |
|  3  |   user4  |   eg    | title | eg3  |
|  4  |   user1  |   eg1   | title | eg4  |
|  5  |   user3  |   eg    | title | eg5  |
|  6  |   user6  |   eg    | title | eg6  |
-------------------------------------------

其中一些用户在 post 表和 portfolio 表中也有数据,所以获取详细信息,我该怎么做,因为我的查询带来了重复数据

最佳答案

你只需要第一个条件,只有当两个表匹配时,内部连接才会工作

  SELECT distinct f1.*, f2.* 
  FROM post f1
  INNER JOIN portfolio f2 ON f1.username = f2.username
  WHERE  f1.username IN ('user1' , 'user2'); 

  SELECT distinct f1.*, f2.* 
  FROM post f1
  INNER JOIN portfolio f2 ON 
          (f1.username = f2.username and  f1.username IN ('user1' , 'user2')); 

sqlfiddle http://sqlfiddle.com/#!9/1cfad/1

和第二个查询 http://sqlfiddle.com/#!9/1cfad/2

如果 jave 3 表都具有共同的用户名,则可以使用双内连接

  SELECT distinct f1.*, f2.*, f3.* 
  FROM post f1
  INNER JOIN portfolio f2 ON f1.username = f2.username
  INNER JOIN table2 f3 on f1.username = f3.username
  WHERE  f1.username IN ('user1' , 'user2'); 

关于mysql - 如何从两个不同的表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38173465/

相关文章:

PHP 脚本和 MYSQL 查询返回不同的(且不需要的)数据

mysql - SQL 函数 2 位数字格式

mysql - 如何优化代码作为同步块(synchronized block)在处理多个请求时导致大量延迟

mysql - ,尝试获取数据库类型的实例时发生激活错误, key "core_erp"

sql - 如何自动启动 SQL Server 代理作业

mysql - 我应该在 MySQL 中创建一个条目可以是多个字符串的列吗?

sql - 使用SQL获取未知字符串的模式?

mysql 昨天日期与特定时间戳

mysql - 被检索两次 SQL 的结果

java - 如何在SQL表的单列中存储超过1个项目