首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql从mysql选择获得条件值吗?

mysql从mysql选择获得条件值吗?
EN

Stack Overflow用户
提问于 2013-09-12 03:12:39
回答 3查看 97关注 0票数 1

因此,假设我有一个名为user的表,其值如下: ip、id和user。如果我想获得基于ip的所有用户,但没有ip,那么我首先执行select ip from users where user = "user";,然后执行select user from users where ip = "xxx.xxx.xxx.xx[x]"; (x是从第一个查询获得的ip号)。难道没有一种方法可以像select user from users where ip = "[insert ip query here to get ip]"那样在1查询中压缩全部内容吗?我知道这听起来可能很傻,但每一个cpu周期对我的程序都很重要,尤其是在一个相当慢的平台上。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-12 03:34:41

如果我正确地理解了您要查找的查询的一个问题,请找到所有与userX共享相同ip的用户。如果是这样的话,那么您可以使用JOIN来完成它。

代码语言:javascript
复制
SELECT DISTINCT u1.user 
  FROM users u1 JOIN users u2
    ON u1.ip = u2.ip
 WHERE u2.user = 'some_user';

或带有子查询

代码语言:javascript
复制
SELECT user 
  FROM users
 WHERE ip IN
 (
     SELECT DISTINCT ip
       FROM users
      WHERE user = 'some_user'
 );

或使用EXISTS

代码语言:javascript
复制
SELECT DISTINCT u.user 
  FROM users u 
 WHERE EXISTS
 (
     SELECT *
       FROM users
      WHERE ip = u.ip
      AND user = 'some_user'
 );

注意:确保您在ipuser上有索引。

这是SQLFiddle演示

票数 2
EN

Stack Overflow用户

发布于 2013-09-12 03:32:48

看起来您执行了两次相同的查询,下面的示例显示了一个嵌套的select,它是一个难以置信的冗余示例,但它显示了您想要的(我认为)

代码语言:javascript
复制
SELECT user FROM users 
WHERE user = (SELECT user FROM users 
              WHERE ip = "xxx.xxx.xxx.xx[x]");

在这个查询中,子查询实际上将返回与外部查询相同的内容,因此没有意义。

票数 0
EN

Stack Overflow用户

发布于 2013-09-12 03:30:46

我想你可以像这样使用子查询:从ip所在的用户中选择用户(从用户中选择ip,比如"% user %")

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18754710

复制
相关文章

相似问题

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