首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:处理多个选择条件?

SQL:处理多个选择条件?
EN

Stack Overflow用户
提问于 2011-10-13 08:24:55
回答 3查看 1.1K关注 0票数 0

我只是一个基本的SQL用户(现在是mySQL+php)。我有多个输入(条件)搜索框。

例如:

颜色:____

尺寸:____

价格:___

条件:___

折扣%:___

命中计数:___

等等,更多.

用户可以输入一个或多个文件。

对于多个输入,也应该对结果进行过滤。

那么,如何在查询中处理这个多个条件呢?

我很困惑如何编写查询(以前的方式):

SELECT * FROM _item_ WHERE color='silver' AND/OR .... ... ?????

请给我一个简单的样品。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-13 08:32:13

最简单的方法是有一个基本查询,即使没有筛选条件,仍然返回结果:

代码语言:javascript
复制
SELECT * 
FROM _item_ 
WHERE 1=1

这样,您就可以根据用户界面中指定的内容,轻松地添加额外的条件来进一步过滤结果。因此,如果有人说他们想过滤颜色“银色”和条件“新”,我们只需将这些添加到我们查询的WHERE子句中:

代码语言:javascript
复制
SELECT *
FROM _item_
WHERE 1=1
AND color = 'silver'
AND condition = 'new'

每个附加的筛选条件都可以通过AND添加到基本查询的末尾。

编辑:,正如在其他文章中指出的,这是一种幼稚的方法,您需要小心SQL注入,但是最初的问题是一个简单的例子,这是我所能想到的最简单的例子。

票数 1
EN

Stack Overflow用户

发布于 2011-10-13 08:35:38

没有一个简单的解决办法。您可以根据参数从头开始创建动态SQL,也可以为每个参数组合使用不同的SP,或者只需获取所有内容,然后在客户端进行筛选。

但是,对于SQL注入要非常小心。

在进一步研究之前,我建议您阅读一些类似于http://www.sommarskog.se/dyn-search.htmlhttp://www.sommarskog.se/dynamic_sql.html的文章,其中给出了关于这类事情的很多细节。很长但值得。

票数 1
EN

Stack Overflow用户

发布于 2011-10-13 08:37:38

您可以使用聚结来动态构造WHERE子句,如果提供的参数为null,则将使用列值,因此只需确保在适当的地方传递null:

代码语言:javascript
复制
SELECT * FROM Table
WHERE color = COALESCE(@Color,color)
AND condition = COALESCE(@Condition,condition)

请注意,这假设使用参数化查询,因此应该是漂亮的SQL注入验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7751313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档