MYSQL可以通过在"IN"语句中使用的搜索值来将结果制表吗?
MYSQL可以通过在"IN"语句中使用的搜索值来将结果制表吗?
考虑下面的MYSQL选择查询:
考虑到上述查询,MYSQL只会显示数据库中与软件匹配的软件和计数。如果软件中没有值为“Version 3”的结果,则不会出现在输出表中。
是否有办法在表中为每个搜索值提供计数,即使计数为零?
理想的输出应该是:
+-----------+-------+
| 软件 | 计数 |
+-----------+-------+
| Version 1 | 5 |
| Version 2 | 3 |
| Version 3 | 0 |
+-----------+-------+
我的真实应用程序比这个稍微复杂一些,但上面的示例是我能解释我所需要的最简单的方式,所以我认为一个答案将对我实现目标非常有帮助。
谢谢
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;