我有一个表用户:
FirstName, LastName, Status, City
还有更多领域。我在前端显示此表,我需要根据每一列进行过滤, 在服务器端。 当前 SQL 查询获取所有数据:
SELECT * FROM Users
但是我使用 graphql,并且我希望能够仅将选定的过滤器传递给查询, 例子有:
WHERE Status = 'single'
我在后端上使用python ( pymysql)
。
当他开始按名称查询时,我该如何做到这一点,以便在选择状态后的示例中
它查询状态为单例的人等。
最佳答案
不确定我是否得到了你想要的,但在我看来,你需要在过滤器上应用过滤器。也就是说,使用第一个过滤器减少行数,然后应用第二个过滤器进一步减少行数,依此类推。
如果是这种情况,您需要将过滤条件保留在用户 session 中(可能使用列表、数组或集合),以便将它们全部累积起来。
第一次,列表不会有任何元素,因此您的表将显示所有行,并且您的 SQL 将如下所示:
select * from users
当用户添加选择过滤器(状态“单个”)时,界面会将其添加到列表中。使用该列表,您的后端将生成新的 SQL:
select * from users
where status = 'single'
接下来,当用户添加新的选择过滤器(城市“罗马”)时,您将其添加到列表中。后端使用该列表将生成新的 SQL:
select * from users
where status = 'single'
and city = 'Rome'
等等。所以你需要注意两件事:
- 维护“过滤器列表”:当用户点击界面上的不同位置/按钮时添加/删除/清除过滤条件。
- 使用列表中的元素动态构建 SQL。
就是这样!
关于mysql - 根据传递的参数进行条件过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49939234/