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连接和计数字段值的主要内容,如果未能解决你的问题,请参考以下文章

php mysql怎样得到查询数据库里面数字的累计数

MySQL 上的左连接 + 计数 + 总和

包含字段中值的连接、分组和计数的 SQL 视图

mysql中将一列以逗号分隔的值分割成多列显示?

mySQL 中的完全外连接计数

如何使用MySQL查询某个列中相同值的数量统计