mysql - 从两个表中选择不同的

标签 mysql

给定下表

      orders
      +----+---------+---------+
      | id | user_id | details |
      +----+---------+---------+  
      | 1  |    2    | blue    | 
      +----+---------+---------+
      | 2  |    1    | red     | 
      +----+---------+---------+
      | 3  |    2    | yellow  | 
      +----+---------+---------+
      | 4  |    2    | cyan    | 
      +----+---------+---------+

      users
      +---------+---------+---------+
      | user_id |    ph   |   name  | 
      +---------+---------+---------+
      |   1     |   123   |   fred  | 
      +---------+---------+---------+
      |   2     |   456   |   Stan  | 
      +---------+---------+---------+
      |   3     |   189   |   Levi  | 
      +---------+---------+---------+

我知道如何使用 distinct 在第一个表中只选择每个用户的一次出现

     SELECT DISTINCT user_id FROM orders

我怎样才能只从用户那里提取电话号码?

我可能会循环并挑选出每个数字,例如...

     SELECT ph from users WHERE user_id = user_id

不禁想到我可能会使用一个单行查询。

结果是

     123
     456

最佳答案

从 Orders 表中选择 Distinctively 可能是一项繁重的操作。取决于该表将变得有多大。

也许这个会更快:

Select u.ph 
  from users u 
  where exists (select id from orders where user_id = u.user_id);

关于mysql - 从两个表中选择不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031956/

相关文章:

mysql - 如何在opencart的mysql中插入最大值加一

mysql 将 auto_increment 字段从 null 更改为记录数

mysql - 将 SQL 查询转换为 Doctrine 1.2 dql

java - 如何将组合框选定的项目pk插入mysql?

javascript - 从电脑获取当前时间并将其保存在数据库中

mysql - 如何检查数据库表中是否存在某个元素?

mysql - 如何使用 Ruby 在 API 中安全地公开 SQL?

python - 使用 Peewee ORM 按与 IN 中使用的列表相同的列表进行排序

使用通过文件的mysql密码特殊字符限制

php - 查看或不查看