2012-02-06 73 views
1
SELECT `views`.* FROM `views` 
    INNER JOIN memberships ON memberships.second_id = views.user_id 
    WHERE (memberships.user_id = 1 OR views.user_id = 1) 

我有这样的MySQL查询 - 我的问题是,中WHERE条款第二部分不工作,都是只取行,这等于memberships.user_id = 1,但已经不是OR views.user_id = 1MySQL的 - 与内部查询JOIN + WHERE子句

为什么不呢?怎么了?

+1

是肯定存在的记录在查看表中(何时加入)匹配查询? – ManseUK 2012-02-06 16:05:53

+0

也许是mysql操作符而不是OR ...反正你的问题有点困惑,特别是“只读取行”。 – B4NZ41 2012-02-06 16:06:55

+0

请修改说明,因为它还不清楚。也许你应该为表格中的模式和示例数据生成一个最小的例子,以及你得到的和你期望的。您可能只需要'views'中的几行(1-4)和'memberships'中的几行(1-4)来显示您的问题。 – 2012-02-06 16:08:54

回答

1

那是因为你要加入的memberships.second_id也许这应该是memberships.user_id=views.user_id,因为如果条件memberships.user_id=1为真,views.user_id等于memberships.second_id和second_id可能不等于1

+0

我试着用'LEFT JOIN'而不是'INNER JOIN',它看起来很有效,但我不太确定,如果它是一个正确的方式 – user984621 2012-02-06 16:07:49

+0

当然,而不是'1'应该是'views.user_id ' - 我从终端窗口复制查询,其中数字而不是变量。 – user984621 2012-02-06 16:09:08