MYSQL可以通过在"IN"语句中使用的搜索值来将结果制表吗?

26 浏览
0 Comments

MYSQL可以通过在"IN"语句中使用的搜索值来将结果制表吗?

考虑下面的MYSQL选择查询:

考虑到上述查询,MYSQL只会显示数据库中与软件匹配的软件和计数。如果软件中没有值为“Version 3”的结果,则不会出现在输出表中。

是否有办法在表中为每个搜索值提供计数,即使计数为零?

理想的输出应该是:

+-----------+-------+

| 软件 | 计数 |

+-----------+-------+

| Version 1 | 5 |

| Version 2 | 3 |

| Version 3 | 0 |

+-----------+-------+

我的真实应用程序比这个稍微复杂一些,但上面的示例是我能解释我所需要的最简单的方式,所以我认为一个答案将对我实现目标非常有帮助。

谢谢

0
0 Comments

MySQL可以通过在'IN'语句中使用的搜索值来制表结果吗?这个问题的出现是因为用户想要知道如何在MySQL中根据搜索值来制表结果,并且希望能够使用变量来实现这一点。解决方法有两种,一种是使用动态SQL查询,根据参数的不同来拼接查询语句的一部分;另一种方法是将所有的值存储到一个临时表中,然后在join语句中使用这个临时表。下面是使用变量的解决方法的示例代码:

set @patterns = 'Version 1,Version 2,Version 3';
set @sql = concat('select
  x.s,
  count(*) as cnt
from (
  select ''', replace(@patterns, ',', ''' as s union all select '''), '''
) x
left join allmydata a on a.software = x.s
group by x.s');
prepare stmt from @sql;
execute stmt;

0