【问题标题】:MySQL - query with INNER JOIN + WHERE clauseMySQL - 使用 INNER JOIN + WHERE 子句查询
【发布时间】:2012-02-06 16:00:25
【问题描述】:
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 = 1

为什么不呢?怎么了?

【问题讨论】:

  • 视图表中是否有明确的记录(连接时)与查询匹配?
  • 也许是 mysql 运算符 AND 而不是 OR ...无论如何你的问题有点混乱,特别是“仅获取行”..
  • 解释不清楚,请修改。也许您应该在表中生成一个模式和示例数据的最小示例,以及您得到的与您期望的。您可能只需要 views 中的几 (1-4) 行和 memberships 中的几 (1-4) 行来显示您的问题。
  • 伙计们,我尝试使用 LEFT 而不是 INNER JOIN 并且它有效...
  • @user984621 那么您在表views 中没有记录,其中memberships.second_id = views.user_idviews.user_id = 1

标签: mysql database inner-join where-clause where


【解决方案1】:

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

【讨论】:

  • 我尝试使用LEFT JOIN 而不是INNER JOIN,它看起来有效,但我不太确定,如果它是正确的方式
  • 当然,应该是 views.user_id 而不是 1 - 我从终端窗口复制了查询,其中是数字而不是变量。
猜你喜欢
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 2013-08-11
  • 2010-11-04
  • 2013-12-22
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多