Php 多表、多语句
让我们看3张有大量行的表:Php 多表、多语句,php,mysql,Php,Mysql,让我们看3张有大量行的表: TABLE Posts PostPID PostUID PostText TABLE Users UserUID UserName TABLE Favorites FavoriteUID FavoritePID 现在,为了获得所有最近的帖子,我执行了如下查询: SELECT p.PostPID, p.PostUID, p.PostText, u.UserUID, u.UserName FROM Posts AS p JOIN Use
TABLE Posts
PostPID
PostUID
PostText
TABLE Users
UserUID
UserName
TABLE Favorites
FavoriteUID
FavoritePID
现在,为了获得所有最近的帖子,我执行了如下查询:
SELECT p.PostPID, p.PostUID, p.PostText, u.UserUID, u.UserName
FROM Posts AS p
JOIN Users AS u
ON p.PostUID = u.UserUID
ORDER BY p.PostPID DESC
LIMIT 0, 30
这很好用。现在我在想,我怎么可能只得到某个UserUID喜欢的帖子呢?因此,只有FavoriteUID=UserUID=X的子查询才能使用
...
Where p.PostUID in (select f.FavoritePID from Favorite f where f.FavoriteUID = UserUID)
...
您可以使用子查询
...
Where p.PostUID in (select f.FavoritePID from Favorite f where f.FavoriteUID = UserUID)
...
第二个join也会这样做
SELECT
p.PostPID, p.PostUID, p.PostText, u.UserUID, u.UserName
FROM
Posts AS p
JOIN
Users AS u ON p.PostUID = u.UserUID
Join
Favorites as f on f.FavoriteUID = u.UserUID and f.FavoritePID=p.PostPID
ORDER
BY p.PostPID DESC
LIMIT 0, 30
第二个join也会这样做
SELECT
p.PostPID, p.PostUID, p.PostText, u.UserUID, u.UserName
FROM
Posts AS p
JOIN
Users AS u ON p.PostUID = u.UserUID
Join
Favorites as f on f.FavoriteUID = u.UserUID and f.FavoritePID=p.PostPID
ORDER
BY p.PostPID DESC
LIMIT 0, 30
您应该按照下面的建议使用连接。我错过了大量的唱片部分。在这种情况下,子查询将很慢。同意。在操作中,成本更高。您应该按照以下建议使用连接。我错过了大量的唱片部分。在这种情况下,子查询将很慢。同意。运营成本更高