我对SQL语句很陌生,我从来都不擅长连接等。我在解决如何执行以下操作时遇到了问题:
我有2个表,一个叫做MUSIC,一个叫做REVIEWS。这两个表链接在一个名为uid的字段上 - MUSIC中的记录是唯一的,但每个MUSIC记录可能有很多评论。
REVIEWS有一个名为thumbsup的字段,如果用户给MUSIC竖起大拇指,则该字段设置为值1。否则,该字段为零。 REVIEWS中可能有很多竖起大拇指,竖起大拇指或没有竖起大拇指。
我正在尝试在MUSIC中显示记录列表,如果有一个包含thumbsup值为1的相应REVIEW记录 - 只有一条记录在REVIEWS中会执行 - 那么在列表页面上显示一个图标。
我已经很好地了解了各种类似的问题,但没有出现这样的问题。我试过围绕类似的连接进行篡改,但坦率地说,它是如何工作的是超出我的范围。抱歉是个白痴。
通过证据证明我至少有过一次,到目前为止,我已根据另一篇文章提出了这个问题:
SELECT m.*, r.thumbsup
FROM (SELECT MAX(thumbsup) uid FROM reviews GROUP By uid) maxThumbs
INNER JOIN reviews r ON maxThumbs.uid = reviews.uid
INNER JOIN music m ON music.uid = reviews.uid
不用说它不起作用:(
如果有人能用正确的查询结构帮助我,我将非常感激。
非常感谢
泰德。
答案 0 :(得分:1)
select DISTINCT m.* from music m INNER JOIN reviews r on m.uid = r.uid where r.thumbsup > 0
答案 1 :(得分:0)
这样的事情怎么样:
SELECT m.*, IFNULL((SELECT 1 FROM reviews r WHERE r.thumbsup > 0 AND m.uid = r.uid LIMIT 1),0) has_review
FROM music m
答案 2 :(得分:0)
SELECT m.*
FROM music m
INNER JOIN
(SELECT DISTINCT reviews.uid WHERE review.thumbsup > 0) r ON (r.uid = m.uid)
答案 3 :(得分:0)
SELECT DISTINCT m.*, r.thumbsup
FROM music m LEFT JOIN reviews r
ON (m.uid = r.uid AND r.thumbsup=1);
将返回没有评论的音乐唱片,没有正面评论,混合评论,只有正面评价(显示任何正面评价)