首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php + mysql (连接?)

php + mysql (连接?)
EN

Stack Overflow用户
提问于 2010-08-06 19:05:10
回答 3查看 102关注 0票数 0

也许这样会更有意义。

MySQL“表”

代码:

代码语言:javascript
复制
id1 | id2
 1  |  2
 1  |  3
 2  |  4
 2  |  3
 3  |  4
 3  |  5

id1 = 1中,这个id连接到231->21->3

我想要做的是输出23的ID,它们没有连接到1,在这种情况下,这些ID将是45

  • 2->4 (1没有连接到4= OK)
  • 2->3 (1连接到3= NOT OK)
  • 3->4 (1没有连接到4= OK) ...but )不应该显示两次,只因为2和3连接到4!!
  • 3->5 (1没有连接到5= OK)

我能想出的唯一方法看起来类似于下面的OHO代码,但如果可能的话,我只想在一个简单的MySQL查询中完成这一切(即加入?):

代码语言:javascript
复制
$a = mysql_query("SELECT id2 FROM table WHERE id1 = 1");
while($b = mysql_fetch_assoc($a))
{
    $c = mysql_query("SELECT id2 FROM table WHERE id1 = $b[id2]");
    while($d = mysql_fetch_assoc($c))
    {
        $e = mysql_query("SELECT id2 FROM table WHERE id1 = 1 AND id2 = $d[id2]");
        $f = mysql_fetch_assoc($e);
        if(!$f['id2'])
        {
            echo $f['id2'];
        }
    }
}

注意:上面的代码的一个问题是它会输出4次,因为2和3都连接到4。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-06 19:10:48

那这个呢?

代码语言:javascript
复制
select distinct a.id2
from myTable a
join (select id1, id2 from myTable where id1 = 1) b on a.id1 = b.id2
where NOT EXISTS (select 1 from myTable where id1 = b.id1)
票数 0
EN

Stack Overflow用户

发布于 2010-08-06 19:34:11

SELECT DISTINCT id2 FROM table WHERE id1 != 1

票数 0
EN

Stack Overflow用户

发布于 2010-08-06 19:34:34

我可能不太理解你的问题,但你想要这样的东西吗?

代码语言:javascript
复制
select
  distinct a.id2
from
  myTable a
where
  a.id2 not in (select id2 from myTable where id1 = 1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3426897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档