#1241 - 操作数应包含全文搜索中的1列

时间:2014-06-14 17:17:05

标签: mysql database

SELECT * FROM POST WHERE ID IN 
    (SELECT ID, MATCH(TITLE, CONTENT) AGAINST ('something lalala') AS score 
    FROM POST_SHADOW WHERE MATCH(TITLE, CONTENT) AGAINST ('something lalala') 
    ORDER BY score DESC)

所以子查询给我2列(ID和得分)导致问题的原因。 我不知道删除得分的列如何删除显示记录的顺序。

1 个答案:

答案 0 :(得分:0)

我猜你需要根据post_shadow表的分数显示帖子,其id列与post id相关联,你可以使用join重写你的查询,如下所示

SELECT 
  p.* 
FROM
  POST 
  JOIN POST_SHADOW ps 
    ON (p.ID = ps.ID) 
WHERE MATCH(ps.TITLE, ps.CONTENT) AGAINST ('something lalala') 
ORDER BY MATCH(ps.TITLE, ps.CONTENT) AGAINST ('something lalala') DESC

您可以使用order by子句中的整个表达式来相应地对结果进行排序,如果有一对多的关系b / w post和post_shadow然后将您的选择部分更改为SELECT DISTINCT p.* ...