我試圖從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中,因此它不在列表中。
表: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
表: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
欲以加入,並且沒有成功的空值。新的值a.updated(時間戳)對於該行是正確的,但是對於專輯「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
與下面的代碼相同。問題在於專輯'add this'與user_uid一起顯示,我不想將它設爲null或「」,以便我可以查看用戶是否缺少專輯。 – Backer 2013-03-20 12:52:07
當用時間戳添加另一列時,我可以看到所有結果都具有相同的日期。看起來像user_uid,發現採取第一行的價值和適用於其餘:/ – Backer 2013-03-20 12:55:35