mysql - 根据传递的参数进行条件过滤

标签 mysql sql pymysql

我有一个表用户:

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/

相关文章:

mysql - SQLWhere条件在我的例子中删除重复记录

Mysql使用一个特定的主键自动增加一列

mysql - SQLSTATE[23000] : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails laravel 5. 2

sql - 需要处理大型数据集的小子集的方法

Python 模块 PyMySQL 不接受参数

python - 获取 Pandas 中共享唯一标识符的一系列行中单元格的最新值

sql - 分页结果集中的选择子查询和左外连接哪个更快

php - 每天统计/计算 mysql 结果

python - 使用 Anaconda 安装本地包

python - 无法在 Windows 机器上使用 sqlalchemy 连接到本地 mysql 数据库