MySQL查询包含两个字段

时间:2012-12-17 18:30:39

标签: php mysql sql

我的两张表,只包括相关值,是:

  • xx_users(user_id,name,location)
  • xx_posts(post,user_id)

xx_users包含所有用户,包括当前用户和海报。

在模拟代码中,我想要实现的是:

SELECT * FROM xx_posts WHERE poster location = user location

鉴于两个表之间的交叉,我将如何处理这个?

4 个答案:

答案 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

http://www.w3schools.com/sql/sql_join_inner.asp

答案 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

See it in action

要根据位置进行过滤,请添加:

WHERE a.location = 'Alaska'

最佳做法是指定列列表,并避免使用SELECT *

<强> INNER JOIN