需要在mysql中基于条件连接表

时间:2013-04-01 12:11:45

标签: mysql join outer-join

我想在iOS / Android应用程序中集成类似的功能。 我正在为此开发服务。 我的问题是: 我有一张名为歌曲的表格,其中有歌曲详情

**like**

song
song_id
station_id
song_file
等等。 我有第二个名为userlike的表,其中存储了像inforamation这样的用户。

**userlike**
user_id
song_id
like

我的主要问题是我想要为特定用户返回所有歌曲详细信息以及类似值信息。如果你不喜欢它,那么我可以在我的JSON中发送'零'或null。 如何构建此查询? 如果用户喜欢它,我需要歌曲数据和价值。

4 个答案:

答案 0 :(得分:0)

试试这个

select s.song, s.song_id from song s , userlike u where u.user_id = your userId;

答案 1 :(得分:0)

假设userlike.likeboolean

SELECT like.song, like.song_id,
 like.station_id,
 like.song_file,
IFNULL(userlike.like,0)
from like left join userlike on like.song_id=userlike.song_id
and userlike.user_id=/*your userid*/

答案 2 :(得分:0)

听起来你需要使用OUTER JOIN

SELECT s.song_id, s.song, u.like
FROM song s 
    LEFT JOIN userlike u 
        ON s.song_id = u.song_id 
            AND u.user_id = @userId

将userId置于Join中将确保即使用户不喜欢它也会返回歌曲。

答案 3 :(得分:0)

select songs.song_id as song_id , songs.station_id as station_id , songs.song_file as song_file , userlike.user_id as user_id ,  COALESCE(userlike.like, 0) as like 
            FROM songs LEFT JOIN userlike
            on songs.song_id = userlike.song_id
            and userlike.user_id = 'your particular user'

上面的sql应该可行。请查找表名和列名进行更正。

由于