MYSQL内部连接与OR条件

时间:2014-10-15 05:41:15

标签: mysql sql

我有3个表格,其中包含以下列:

表1:

userId | seriesId | content

表2:

followerId | followeeId

表3:

followerId | seriesId

我尝试做的事情是这样的:

SELECT Table1.content 
FROM Table1 
    (INNER JOIN Table2 ON Table2.followeeId=Table1.userId WHERE Table2.followerId=X) 
OR (INNER JOIN Table3 ON Table3.seriesId=Table1.seriesId WHERE Table3.followerId=X)

' X'将是一些动态生成的数字。我不确定这是否是正确的方法,但你得到了我正在努力做的事情?我的问题是,实现这样的事情的正确方法是什么?如果我的问题的任何部分不清楚,请在评论中告诉我。

2 个答案:

答案 0 :(得分:2)

使用UNION

SELECT Table1.content
FROM Table1
INNER JOIN Table2 ON Table2.followeeId=Table1.userId 
WHERE Table2.followerId=X
UNION
SELECT Table1.content
INNER JOIN Table3 ON Table3.seriesId=Table1.seriesId 
WHERE Table3.followerId=X

答案 1 :(得分:2)

你也可以这样做..

SELECT Table1.content 
FROM Table1 
LEFT JOIN Table2 ON Table2.followeeId=Table1.userId 
LEFT JOIN Table3 ON Table3.seriesId=Table1.seriesId
where Table2.followerId=X or Table3.followerId=X;

另一种方式是联盟

select table1.content
from table1
INNER JOIN Table2 ON Table2.followeeId=Table1.userId 
where followerId = X
union
select table1.content
from table1
INNER JOIN Table3 ON Table3.seriesId = Table1.seriesId
where Table3.followerId = X;