使用带有子查询的MySQL选择查询

时间:2013-07-24 18:24:27

标签: php mysql

我正在尝试从表中选择数据行,其中user_id不等于登录用户的uder_id以及user_id不在子查询中的位置。出于某种原因,我无法让它发挥作用。我能做错什么?

我的代码:

SELECT * 
FROM table_name 
WHERE user_id != '".$_SESSION['id']."' 
    AND user_id NOT IN(
      SELECT * FROM another_table_name where user1= '".$user_id."' AND status= 1)
ORDER BY RAND()
LIMIT 5

4 个答案:

答案 0 :(得分:0)

您必须从user_id中仅选择another_table_name。 没有看到你的桌子结构,我无法进一步帮助你。

答案 1 :(得分:0)

你的逻辑是正确的。我们不知道的是查询中的参数化值。我的猜测是那些不等于你期望的值。

答案 2 :(得分:0)

在子查询中,您只想选择user_ids,使用“select *”

进行子查询
SELECT * FROM table_name WHERE user_id != '".{$_SESSION['id']}."' AND user_id NOT IN(SELECT    
user_id FROM another_table_name where user1= '".$user_id."' AND status= 1) ORDER BY RAND()     LIMIT   5

答案 3 :(得分:0)

您只需要从子查询中选择user_id。也许是这样的:

SELECT * 
  FROM table_name 
  WHERE user_id != '".{$_SESSION['id']}."' 
    AND user_id NOT IN(SELECT user_id 
      FROM another_table_name 
      WHERE user1= '".$user_id."' 
      AND status= 1) 
  ORDER BY RAND() 
  LIMIT 5