MySQL查询 - 查找有多个不同值的所有记录

时间:2016-03-02 18:10:14

标签: mysql

我试图从一个表中选择值,其中更多而不是另一个表中特定属性的一个不同值。

我觉得它应该是这样的,但我似乎无法让它发挥作用:

SELECT * value1
FROM table1
JOIN table2 ON table1.id=table2.id
HAVING COUNT(DISTINCT value2) > 1

好的,例如:

table1        table2
id   name     id   hobby
1     a       1     x
2     b       1     x
3     c       3     y
4     d       4     z

所以我想选择所有具有多个爱好的名称(在本例中为名称a)。

我很欣赏这不是完全正常化而且非常简化,但我似乎无法弄清楚如何表达不止一次出现的事情' SQL中另一个值的值。

3 个答案:

答案 0 :(得分:0)

尝试使用Group By子句:

SELECT * value1
FROM table1
JOIN table2 ON table1.id=table2.id
Group By table1.id
HAVING COUNT(DISTINCT value2) > 1

评论中还说明了Table1或Table2的Value2部分?

答案 1 :(得分:0)

因为我们不知道你桌子的确切结构......这是我最好的猜测。请测试一下,让我知道。

select *     
  From   table1 a , (select id , value2  from table2   
  Group  By id , value2 HAVING COUNT(value2) > 1 ) b 
  where  a.id = b.id1

答案 2 :(得分:0)

IMO你最好使用以下策略:

  1. 查找table2 JOIN table1
  2. 中的数据
  3. 从#1集开始,为每对value2 / value2
  4. 计算id次出现次数
  5. 最后只保留这些出现的记录> 1
  6. 所以你可以试试这个:

    SELECT T2.COUNT(*) AS `count`, T2.value2, T1.*
    FROM table2 T2
      JOIN table1 T1 ON T1.id = T2.id
    GROUP BY T2.value2, T2.id
    WHERE `count` > 1
    

    BTW请注意,我没有包含任何关于value1的内容,因为我不会看到它不仅如何涉及您的问题,还会显示它可能表示您在查询中的显示方式示例