Sql 连接上的子查询
我正在尝试执行一个查询,以筛选一个表中的行,然后连接另一个表中的结果,然后筛选出其他行 以下是我写的查询:Sql 连接上的子查询,sql,mysql,mysql-error-1248,Sql,Mysql,Mysql Error 1248,我正在尝试执行一个查询,以筛选一个表中的行,然后连接另一个表中的结果,然后筛选出其他行 以下是我写的查询: SELECT * FROM (SELECT media.id AS id2, media.flagged AS flagged2, media.item_status AS status2 FROM media WHERE flagged2 != 'nsfw' AND status2 != 'deleted'
SELECT *
FROM (SELECT media.id AS id2, media.flagged AS flagged2, media.item_status AS status2
FROM media
WHERE flagged2 != 'nsfw'
AND status2 != 'deleted'
ORDER BY id2 DESC LIMIT 0,5)
JOIN media on info.mid = media.id
WHERE info.topic = 'food_drink'
OR info.topic='cooking'
GROUP BY info.mid
我想我很快就可以让查询正常工作了,但我一直得到这样一条信息:“每个派生表都必须有自己的别名。”我在谷歌上搜索了这条信息,从我所读到的内容来看,我需要给子查询的部分加上别名,我已经尝试过了,但仍然无法正常工作。使用:
SELECT *
FROM (SELECT media.id AS id2, media.flagged AS flagged2, media.item_status AS status2
FROM media
WHERE flagged2 != 'nsfw'
AND status2 != 'deleted'
ORDER BY id2 DESC LIMIT 0, 5) x
JOIN media on info.mid = media.id
WHERE info.topic = 'food_drink'
OR info.topic='cooking'
GROUP BY info.mid
参见
x
,就在括号外,但在连接之前?这就是错误所在。在FROM和before JOIN之后的括号中的内容是一个派生表(也称为内联视图),MySQL要求您为其指定一个表别名。然后,当您引用其中的任何列时,您将使用x.id2
/等。只是一个简单的问题……您从哪里获得“信息”?它是别名还是表?@hallie:鉴于Eric没有使用表别名,我相信它是表。Eric必须让我们知道是否应该在这个查询中引用INFO
,否则它们与派生表的关系…我怀疑…在INFO.mid=media.id上加入媒体。。。实际上应该是…在info.mid=media.id上加入信息…啊,这很有意义。我还以为我需要别名的部分在子查询中。只需根据您的输入重新编写查询,即可完美运行!