查询返回多行?

时间:2016-05-12 14:11:10

标签: mysql

我使用php和mysql为字母A-Z创建分页。我在表格中有单个记录字母A.当我查询记录时,它将返回多行而不是单行。此外,链接的表格仅包含A&#39的电影ID的单行记录。任何表中都没有一对多的关系。如果我在那里犯了任何错误,请通过以下查询正确。在此先感谢。

select 
    M.name, 
    M.id, (select year(M.released_date))as year, 
    MS.storyrating,
    S.screenplayrating,   
    MS.dialoguerating, 
    MS.directionrating,
    MS.musicrating, 
    MS.bgmrating, 
    MS.cinematographyrating, 
    MS.characterizationrating, 
    MS.shotlocationrating, 
    MS.editingrating, 
    MS.productionrating,
    MI.director,
    MI.musicdirector 
from tttbl_movie M, tttbl_movie_info MI, tttbl_movie_score MS 
where M.id=MI.movie_id 
    and M.id=MS.movie_id 
    AND M.name 'A%' OR M.name 'a%' 
ORDER BY M.name ASC LIMIT 0,2;

3 个答案:

答案 0 :(得分:0)

尝试更改您的ORDER BY

ORDER BY M.name ASC LIMIT 1;

你错过了like条款中的OR,我认为这是一个错字,因为你说你得到了2条记录。

答案 1 :(得分:0)

你的代码中没有喜欢的条款

select 
 M.name, 
 M.id, 
 year(M.released_date  as year, 
 MS.storyrating,
 S.screenplayrating,   
 MS.dialoguerating, 
 MS.directionrating,
 MS.musicrating,
 MS.bgmrating, 
 MS.cinematographyrating, 
 MS.characterizationrating, 
 MS.shotlocationrating, 
 MS.editingrating, 
 MS.productionrating,
 MI.director,
 MI.musicdirector 
 from tttbl_movie M, tttbl_movie_info MI, tttbl_movie_score MS 
  where M.id=MI.movie_id 
 and M.id=MS.movie_id 
 AND M.name  like 'A%' OR M.name like 'a%' ORDER BY M.name ASC LIMIT 0,2;

如果你需要它最终限制1

LIMIT 1;

答案 2 :(得分:0)

您需要添加LIKE关键字,我认为您应该为OR部分添加括号

where M.id=MI.movie_id 
  and M.id=MS.movie_id 
  and (M.name LIKE 'A%' OR M.name LIKE 'a%')
ORDER BY M.name ASC;