MySQL连接问题
有谁能告诉我,是否可以使用自连接将以下两个查询合并为一个查询,如果可以,如何实现 问题1:MySQL连接问题,mysql,self-join,Mysql,Self Join,有谁能告诉我,是否可以使用自连接将以下两个查询合并为一个查询,如果可以,如何实现 问题1: SELECT pm.username AS user, uc.content_id AS id, value AS filename, name, moderation_status AS status, uc.parent_content_id FROM myweb.ugc_meta um
SELECT pm.username AS user,
uc.content_id AS id,
value AS filename,
name,
moderation_status AS status,
uc.parent_content_id
FROM myweb.ugc_meta um
LEFT JOIN myweb.ugc_content uc ON uc.content_id = um.item_id
LEFT JOIN myweb.userbase_member pm ON uc.user_id = pm.id
WHERE uc.content_type ='my.photo'
AND uc.promoted = '1'
AND moderation_status='passed'
LIMIT 10
问题2:
SELECT value
FROM myweb.ugc_meta um
WHERE um.item_id = '4780c650137a3409901286'
-- (item_id is the content_parent_id from query 1)
ugc\u meta
包含ugc\u content
中照片的相册名称<代码>ugc_内容包含相册和照片的行<代码>代表照片的行有一个父内容id
,它是父行的内容id
。我没有更改表或数据库结构的选项
目前,我正在为查询1中的每一个次优结果行运行一个新查询(查询2;-)
谢谢 如果要自联接表,必须为每个表指定不同的别名,那么它应该可以正常工作
SELECT pm.username AS user,
uc.content_id AS id,
um.value AS filename, um2.value AS filename2
um.name, um2.name AS name2
moderation_status AS status,
uc.parent_content_id
FROM myweb.ugc_meta um
LEFT JOIN myweb.ugc_content uc
ON uc.content_id = um.item_id
LEFT JOIN myweb.userbase_member pm
ON uc.user_id = pm.id
LEFT JOIN myweb.ugc_meta um2
ON id = um2.item_id
WHERE uc.content_type ='my.photo'
AND uc.promoted = '1'
AND moderation_status='passed'
LIMIT 10
希望这能奏效 您应该能够使用不同的别名简单地使用到ugc_元表的左联接,以实现父表联接,如下所示:
SELECT pm.username AS user,
uc.content_id AS id,
value AS filename,
name,
moderation_status AS status,
uc.parent_content_id,
parent.`value`
FROM myweb.ugc_meta um
LEFT JOIN myweb.ugc_content uc ON uc.content_id = um.item_id
LEFT JOIN myweb.ugc_meta parent ON uc.parent_content_id = parent.item_id
LEFT JOIN myweb.userbase_member pm ON uc.user_id = pm.id
WHERE uc.content_type ='my.photo'
AND uc.promoted = '1'
AND moderation_status='passed'
LIMIT 10
我使用左连接是因为子表中可能不总是有父级内容id,如果在这种情况下总是有父级内容id,那么您可以使用内部连接,这将进一步提高性能。这应该可以做到:
SELECT pm.username AS user,
uc.content_id AS id,
value AS filename,
name,
moderation_status AS status,
um2.value AS
FROM myweb.ugc_meta um
LEFT JOIN myweb.ugc_content uc ON uc.content_id = um.item_id
LEFT JOIN myweb.userbase_member pm ON uc.user_id = pm.id
LEFT JOIN myweb.ugc_meta om2 ON um2.item_id = uc.parent_content_id
WHERE uc.content_type ='my.photo'
AND uc.promoted = '1'
AND moderation_status='passed'
LIMIT 10
如果它们来自ugc\U meta,您可能必须在值
、名称
和适度状态
前面加上“um.”,否则该值是否取自um
ogum2
,就会模糊不清