Mysql SQL中有两个“连接”的不需要的结果
我目前的数据库有问题。我有一张电影评论表,一张正面评论表和另一张负面评论表。最后一个链接到审阅的id 以下是正表和负表: 我想得到这个结果:Mysql SQL中有两个“连接”的不需要的结果,mysql,sql,Mysql,Sql,我目前的数据库有问题。我有一张电影评论表,一张正面评论表和另一张负面评论表。最后一个链接到审阅的id 以下是正表和负表: 我想得到这个结果: SELECT positives.libelle AS positive, negatives.libelle AS negative FROM reviews LEFT JOIN positives ON positives.review_id = reviews.id LEFT JOIN negatives ON negatives.review_id
SELECT positives.libelle AS positive, negatives.libelle AS negative FROM reviews LEFT JOIN positives ON positives.review_id = reviews.id LEFT JOIN negatives ON negatives.review_id = reviews.id WHERE reviews.id = 1
但我有一个:
以下是获得此结果的SQL代码:
SELECT positives.libelle AS positive, negatives.libelle AS negative FROM reviews LEFT JOIN positives ON positives.review_id = reviews.id LEFT JOIN negatives ON negatives.review_id = reviews.id WHERE reviews.id = 1
您想要的结果并不是真正的关系格式,因为给定行上的列值实际上彼此无关 MySQL不支持完全连接,因此我建议使用union all和row_number枚举行,并通过group by将它们组合在一起:
SELECT MAX(positive) as positive), MAX(negative) as negative)
FROM ((SELECT p.review_id, p.libelle as positive, NULL as negative,
ROW_NUMBER() OVER (PARTITION BY p.review_id ORDER BY id) as seqnum
FROM positives p
WHERE p.review_id = 1
) UNION ALL
(SELECT n.review_id, NULL, n.libelle,
ROW_NUMBER() OVER (PARTITION BY n.review_id ORDER BY id) as seqnum
FROM negatives n
WHERE n.review_id = 1
)
) pn
GROUP BY review_id, id
ORDER BY review_id, id;
注意:如果没有正面和负面的评论,这将不会返回任何行。如果需要考虑的话,您可以合并一个左联接。如果您不需要有关reviewer的任何信息,为什么要将表与reviewer联接?只需按review_id=1限制表格 下面的查询并不能完全满足您的需求,但是,可能会对您的问题有所帮助。认为联合是更有效率的加入。如果可以使用Union,请避免使用Join 您必须使用审阅者id完全退出加入