假设我有表问题以及以下数据:
+------+------------+
| id | project_id |
+------+------------+
| 101 | 2 |
| 102 | 2 |
| 103 | 2 |
| 104 | 2 |
| 105 | 2 |
| 106 | 2 |
| 107 | 2 |
| 123 | 9 |
| 234 | 63 |
| 454 | 77 |
| 893 | 73 |
| 1233 | 101 |
+------+------------+
例如,我想用project_id 2,64和77来计算项目中的问题数量。我可以使用以下SQL语句来实现这一点
select count(*) from issues where project_id in (2,64,77);
但是如果我不想每次创建这个语句但是以某种方式保存它并且只是传递我需要的项目的ID呢? 所以我需要像下面这样的函数,比如
select my_function(2,64,77);
但问题是我似乎无法用这样的动态参数创建函数。有没有办法做到这一点?当然它不必是函数 - 我可以使用视图,过程,函数或其他任何东西,只要我可以保存我的sql语句并只传递id作为参数。 我也可以通过SQL生成我需要的ID,如
select my_function("select id from projects where name like '%qwerty%'")
也没关系。
当然,实际上这个陈述比这个例子难得多,每次写这个陈述不仅难,而且容易出错