我正在尝试从MySQL中的两个表中获取列表。通过查看artist_albums_link - > artist_uid并匹配到artists_albums。该列表应包含相同的专辑,但同时包含用户没有的艺术家的所有专辑。
user_uid ='5'
的结果album_uid artist_uid title user_uid
album:another artist:00N1TiCLsiP8IE24hw0rl9 yahoo 5
album:test artist:00N1TiCLsiP8IE24hw0rl9 Test 5
album:notinlist artist:00N1TiCLsiP8IE24hw0rl9 add this null
这是下面的数据表。 请注意用户'5'如何有两个album_links,但因为艺术家还有另一张专辑,所以也会显示。专辑“not show”不在用户albums_link中,因此它不在列表中。
table:artists_albums
album_uid artist_uid title
album:another artist:00N1TiCLsiP8IE24hw0rl9 yahoo
album:noshow artist:00sazWvoTLOqg5MFwC68Um not show
album:notinlist artist:00N1TiCLsiP8IE24hw0rl9⇥ add this
album:test artist:00N1TiCLsiP8IE24hw0rl9 Test
table:artist_albums_link
uid user_uid artist_uid album_uid
1 5 artist:00N1TiCLsiP8IE24hw0rl9 album:test
2 6 artist:00N1TiCLsiP8IE24hw0rl9 album:test
3 5 artist:00N1TiCLsiP8IE24hw0rl9 album:another
尝试使用join来获取null值但没有成功。新值a.updated(timestamp)对于行是正确的,但是专辑“album:notinlist”的值b.found(timestamp)是错误的,这篇文章在artist_albums_link中不存在。
SELECT a.album_uid, a.artist_uid, a.title, a.updated, b.user_uid, b.found
FROM artist_albums a LEFT OUTER JOIN artist_albums_link b ON a.artist_uid = b.artist_uid
WHERE b.user_uid = '5'
结果:
album_uid artist_uid title updated user_uid found
album:another artist:00N1TiCLsiP8IE24hw0rl9 yahoo 2013-03-20 11:29:08 5 2013-03-18 11:24:47
album:another artist:00N1TiCLsiP8IE24hw0rl9 yahoo 2013-03-20 11:29:08 5 2013-03-19 11:29:59
album:notinlist artist:00N1TiCLsiP8IE24hw0rl9 add this 2013-03-15 11:41:20 5 2013-03-18 11:24:47
album:notinlist artist:00N1TiCLsiP8IE24hw0rl9 add this 2013-03-15 11:41:20 5 2013-03-19 11:29:59
album:test artist:00N1TiCLsiP8IE24hw0rl9 Test 2013-03-20 11:23:41 5 2013-03-18 11:24:47
album:test artist:00N1TiCLsiP8IE24hw0rl9 Test 2013-03-20 11:23:41 5 2013-03-19 11:29:59
答案 0 :(得分:0)
您可以尝试以下代码:
SELECT a.album_uid, a.artist_uid, a.title, b.user_uid
FROM artists_albums a, artist_albums_link b
WHERE a.artist_uid = b.artist_uid AND b.user_uid = 5;
希望它有所帮助!
答案 1 :(得分:0)
终于找到了有用的东西。
SELECT a.album_uid, a.artist_uid, a.title, a.updated, b.user_uid, b.found
FROM artist_albums AS a
LEFT OUTER JOIN artist_albums_link AS b ON a.album_uid = b.album_uid
WHERE EXISTS (SELECT artist_uid FROM artist_albums_link WHERE artist_uid = a.artist_uid ) AND (b.user_uid = '5' OR b.user_uid is null)