Mysql 如何从两个不同的表中获取数据
我正在尝试从两个不同的表中获取数据,这三个表的共同点是username字段,这是我迄今为止所做的尝试Mysql 如何从两个不同的表中获取数据,mysql,sql,Mysql,Sql,我正在尝试从两个不同的表中获取数据,这三个表的共同点是username字段,这是我迄今为止所做的尝试 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'); 我想要的是,如果us
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
表中有post数据,在portfolio
表中有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表中也有数据,因此获取详细信息,因为我的查询带来了重复的数据,我该怎么做呢?只有在两个表中匹配时,才需要第一个条件内部连接工作OK
SELECT
DISTINCT *
FROM
post f1
INNER JOIN
portfolio f2 ON f1.username = f2.username
WHERE
f1.username IN ('user1' , 'user2')
OR f2.username IN ('user1' , 'user2');
SELECT distinct f1.*, f2.*
FROM post f1
INNER JOIN portfolio f2 ON f1.username = f2.username
WHERE f1.username IN ('user1' , 'user2');
或
sqlfiddle
第二个问题
如果您有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');
根据您提供的示例,您的查询仅返回user1数据,而不是User2。我的查询应同时返回这两个数据。。其中位于('user1','user2')…检查是否有正确的数据。。在您的测试用例中,我应该在SQLFIDLE上显示查询中有错误吗?我已经用ref更新了查询。。摆弄。。就像你可以检查查询一样。谢谢,如果有第三个表,我怎样才能将第三个表集成到它中呢?你的查询返回重复的数据。嗨,你能给你的代码添加一些解释吗?这会出现在审阅队列中,因为只有代码的答案往往会出现。
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');