我试图从一个表中选择值,其中更多而不是另一个表中特定属性的一个不同值。
我觉得它应该是这样的,但我似乎无法让它发挥作用:
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中另一个值的值。
答案 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你最好使用以下策略:
table2 JOIN table1
value2
/ value2
id
次出现次数
所以你可以试试这个:
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
的内容,因为我不会看到它不仅如何涉及您的问题,还会显示它可能表示您在查询中的显示方式示例