我的两张表,只包括相关值,是:
xx_users包含所有用户,包括当前用户和海报。
在模拟代码中,我想要实现的是:
SELECT * FROM xx_posts WHERE poster location = user location
鉴于两个表之间的交叉,我将如何处理这个?
答案 0 :(得分:4)
如果我完全理解你的问题,解决办法可能就像:
SELECT * from posts INNER JOIN users ON users.user_id = posts.user_id WHERE users.location = 'the location
“
答案 1 :(得分:1)
如果我正确地解决了问题,您希望查看与当前用户(或其他特定用户)共享分配的用户发布的所有帖子。在这种情况下:
SELECT p.*
FROM xx_posts p
INNER JOIN xx_users poster ON p.user_id = poster.user_id
INNER JOIN xx_users currentuser ON u1.location = u2.location
WHERE currentuser.user_id = <the id of the user you're interested in>
答案 2 :(得分:0)
你想要这个吗?
SELECT p.post,p.user_id,...
FROM xx_posts as p
INNER JOIN xx_users as u
ON p.user_id=u.user_id
WHERE p.location = u.location
答案 3 :(得分:0)
要获得两组的交集,请使用INNER JOIN
:
SELECT a.user_id, a.name, a.location, b.post
FROM xx_posts b
INNER JOIN xx_users a ON a.user_id = b.user_id
要根据位置进行过滤,请添加:
WHERE a.location = 'Alaska'
最佳做法是指定列列表,并避免使用SELECT *
。
<强> INNER JOIN
强>