【问题标题】:Specifying MySQL Join指定 MySQL 连接
【发布时间】:2011-11-06 09:53:45
【问题描述】:

我有两个表,其中一个字段链接到另一个表中的 ID,在另一个表中,我需要检查一个值是否有效。表格如下所示:

TABLE1
id - table2_id- deleted - user_id

TABLE2
id - is_valid

现在,我尝试使用连接无济于事,但这是我想要完成的:

从TABLE1中选择一行(ID),其中deleted = 0,user_id = $id,然后我需要获取TABLE1的table2_id并进入TABLE2中ID为table2_id的行并检查is_valid = 0 .

我还需要将结果限制为 6 个并随机选择它们。 提前致谢。

编辑:另一种可视化我想要完成的方法:

$query = mysql_query("SELECT id, table2_id FROM table1 WHERE user_id = '$id' AND deleted = '0'");

        while ($row = mysql_fetch_array($query)) {   

            $table2_id = $row['table2_id'];
            $q = mysql_query("SELECT id FROM table2 WHERE id = '$table2_id' AND is_valid = '0'");

            if ($q) $final_ids[] = $row['id'];

        }

【问题讨论】:

标签: php mysql sql join random


【解决方案1】:
    SELECT table1.id -- add other fields you might want
      FROM table1
INNER JOIN table2 
        ON table1.table2_id = table2.id
     WHERE user_id = $user_id
       AND deleted = 0
       AND is_valid = 0 -- do you really mean 0 here?
  ORDER BY RAND()
     LIMIT 6

【讨论】:

  • 用这个做了一些测试,我不确定它是否是我要找的。我还尝试了自己的“正常”连接。也更新了我的编辑。
  • @Tony 那么这是怎么回事?根据我在您的代码中读到的内容,此查询执行完全相同的操作,除了按照您的要求选择最多 6 个随机行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 2019-02-14
  • 2016-12-30
  • 2018-03-19
  • 2014-06-11
  • 2013-06-28
相关资源
最近更新 更多