【问题标题】:How to select columns that have repeating values from another table in SQLite如何从 SQLite 中的另一个表中选择具有重复值的列
【发布时间】:2015-03-21 05:23:14
【问题描述】:

我正在关注 Zed Shaw 的 learnSQLthehardway,我想弄清楚如何从拥有多个宠物的桌子人中选择名字(宠物表中的宠物信息。)

person_pet Table:    

person_id    pet_id
    0           0
    0           1
    1           1
    1           2
    2           3

person Table:

    id        name
     0         Zed
     1         Orange
     2         Limen


pet Table:

    id        name
     0         Jag
     1         Black
     2         Fluffy
     3         Mister

我一直在尝试使用 COUNT 函数,但似乎无法获得正确的结果。我必须根据这些数据返回 Zed 和 Orange。

SELECT name FROM person, person_pet WHERE id = 
(SELECT person_id FROM person_pet GROUP BY person_id HAVING COUNT(person_id) > 1);

这只是返回 Zed 而不是我的名字。如何?那有什么办法可以解决问题呢?

任何帮助都会很棒,谢谢!

【问题讨论】:

  • 我可以看到这个查询有很多问题,从错误“子查询返回多行”开始。但是,我看不出它只会返回“Zed”而不是其他任何东西。

标签: sql sqlite


【解决方案1】:

使用来自person 表的SELECT 和来自person_pet 表的IN 条件:

SELECT name 
FROM person 
WHERE id IN 
(
    SELECT person_id from person_pet
    GROUP BY person_id
    HAVING COUNT(pet_id) > 1
)

【讨论】:

  • 除了是“id”而不是person_id(第一次),谢谢!!! IN 是我当时所缺少的。所以 COUNT 基本上只是返回一列在表中出现的次数,所以我得到的是 person_id 还是 pet_id 都没关系
  • 更新了查询以使用 id 而不是 person_id
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多