我有两个表:tracklist(trackid artist event date)
和radded(trackid, user)
,与n的关系为1(trackid是每个表上的键)。
我想通过添加一个名为exist
的新字段来返回整个跟踪列表表,如果在重排的表上存在用户(已通过查询)在每一行的相关trackid时,该字段应该为1或0。
范例:
追踪清单
*trackid artist event date*
123 art1 eve1 date1
321 art2 eve2 date2
456 art3 eve3 date3
298 art4 eve4 date4
565 art5 eve5 date5
added
trackid user
123 luigi
123 mario
321 luigi
298 mario
298 antonio
如果我使用luigi作为用户,则输出必须为:
123 art1 eve1 date1 1
321 art2 eve2 date2 1
456 art3 eve3 date3 0
298 art4 eve4 date4 0
565 art5 eve5 date5 0
我该如何查询?
最佳答案
从LEFT OUTER JOIN
到tracklist
使用radded where user="luigi"
。这将从tracklist
的每一行中准确获得一次,如果username
存在,将放置NULL
;如果找不到合适的用户名,则放置1
。
然后将用户名转换为NULL
,或将0
转换为exist
,并将列重命名为。
SELECT t.trackid, t.artist, t.event, t.date, IF(r.user IS NULL, 0, 1) AS exist
FROM tracklist t
LEFT OUTER JOIN (SELECT * from radded where user = "luigi") r
ON t.trackid = r.trackid
关于mysql - MySQL-加入麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5133506/