MySQL选择等于多个值的位置

时间:2011-07-29 18:55:39

标签: mysql select

我有两个数据库,我存储谁跟踪谁和另一个存储用户发布的帖子。

我想从以下数据库中选择用户所关注的所有人,并回显该用户所关注的用户名,并查询该帖子数据库以查找该用户的帖子。

我的问题是,如果用户关注多个用户, 我回应了这个用户关注的人的用户ID,我得到了 44443344330

当我用commans分隔每个id时,我得到:

44,44,33,44,33,0, 

所以让我们给出一个$user_ids;

的变量
$user_ids = "44,44,33,44,33,0, ";

查询:

$get_posts = mysql_query("SELECT * FROM posts WHERE userid = '$user_ids'");

但它只是显示第一个用户ID的记录,44。

如何检索所有用户的所有记录?

6 个答案:

答案 0 :(得分:26)

查询应为:

SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)

但是,您可能需要重新考虑数据模型并确保它已标准化,以便您可以直接在数据库中表达此构造,而不会回显到以逗号分隔的字符串。

为什么你有两个数据库?你的意思是两个

答案 1 :(得分:21)

也许您想使用IN

SELECT * FROM posts WHERE userid IN ($user_ids)

答案 2 :(得分:1)

假设您有两个表格,而不是数据库,并且该表(让我们称之为“朋友”)描述了谁跟随谁

table friends(
  userid
  friendid
)

然后查询以获取X的朋友发布的帖子

SELECT
 p.* 
FROM posts p
  JOIN friends f ON(p.userid = f.friendid)
WHERE f.userid = X

答案 3 :(得分:0)

$get_posts = mysql_query("SELECT * FROM posts WHERE userid in '($user_ids)'");

答案 4 :(得分:0)

$var= str_replace(","," or userid = ","userid =$your_data_from_db");

您的myqsl_query = SELECT * FROM posts where $var

答案 5 :(得分:0)

鉴于您有两个表,而不是两个数据库,匹配特定列的多个值的最简单方法如下:

SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)

*我在执行此操作时遇到的一个小问题。如果要匹配类型为VARCHAR(n)的列,请确保将匹配的值包装在“单引号”中,而不是“双引号”

例如:

SELECT * FROM posts WHERE name IN ('foo','bar','alpha','beta')