【问题标题】:MySQL query with Inner Join returning zero rows带有内部联接的 MySQL 查询返回零行
【发布时间】:2011-08-16 04:01:07
【问题描述】:
SELECT *
FROM Posts
WHERE MATCH (Posts.City) AGAINST ('Lujan') 

显示 29 行。但是:

SELECT Users.*, Posts.* 
FROM Users 
INNER JOIN Posts ON Users.User = Posts.User 
WHERE MATCH (Posts.City) AGAINST ('Lujan')

得到了零个结果,而我应该得到完全相同的结果。

向回显的查询添加解释:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  Posts   fulltext    city_comparator,user_comparator city_comparator 0       1   Using where
1   SIMPLE  Users   eq_ref  user_unique,user_comparator user_unique 62  chusmix.Posts.User  1    

我不知道这意味着什么,而且在表用户中,全文索引“user_comparator”的基数为 0。虽然我已经注册了 10 多个用户。我还有一个用于列 Users.User 的唯一索引和一个用于 Users.ID 的主索引。

我更改了一些内容,所有使用 INNER JOIN 的查询都停止工作。我能做些什么来解决这个问题?谢谢

【问题讨论】:

  • 卢汉好像没有用户和帖子

标签: mysql sql


【解决方案1】:

表示 Users 表中没有与 Posts 表匹配的行。如果即使没有匹配项也要选择行,请使用外部联接(在您的情况下将 INNER JOIN 更改为 RIGHT JOIN)。

【讨论】:

    【解决方案2】:

    这会返回您的行吗?您的帖子记录的用户表中可能没有相应的用户条目。

    SELECT *
    FROM Posts
    LEFT JOIN Users ON Users.User = Posts.User
    WHERE MATCH (Posts.City) AGAINST ('Lujan') 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多