mysql连接和计数字段值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql连接和计数字段值相关的知识,希望对你有一定的参考价值。
使用mysql非常新,所以如果这个问题非常简单,请原谅。如果有人能够至少提出我应该研究的主题,那将会很棒。
我有3个表,用户,计算机,组件。 (这只是一个例子)。
user computer component
---- ------- ----
id id id
firstName user_id computer_id
lastName name componentName
type componentValue
用户可能有多台计算机,而这些计算机又可能具有多个属性。
我正在尝试编写一个查询,该查询可以让所有“Macintosh”计算机的所有用户ID都包含所有“ram”组件,其中包含“16GB”值。
到目前为止,我正在努力使计数正确,但写了这样的事情:
select user.id from user
inner join computer on user.id=computer.user_id and computer.name='Macintosh'
inner join component on computer.id=component.computer_id and component.componentName='ram'
having count(component.propertyName='ram')=count(component.propertyValue='16GB');
提前感谢任何建设性的反馈。
答案
你可以过滤componentValue ='16GB'
select user.id
from user
inner join computer on user.id=computer.user_id and computer.name='Macintosh'
inner join component on computer.id=component.computer_id
and component.componentName='ram'
and component.componentValue = '16GB'
如果您只想使用只有16GB内存的计算机,您可以使用
select user.id
from user
inner join computer on user.id=computer.user_id and computer.name='Macintosh'
and computer.id not (
select component.computer_id
from component
where component.componentName='ram'
and component.componentValue <> '16GB')
以上是关于mysql连接和计数字段值的主要内容,如果未能解决你的问题,请参考以下文章