过滤条件SQL

时间:2016-07-05 11:21:16

标签: sql

我有以下表1

Brand Payment_method
Soap  Cash
Soap  Card
Juice  Cash
pen    Card

品牌是强制性提示,而Payment_method是非强制性提示

要求:

如果我为像牌肥皂这样的品牌提供价值而对payment_method没有价值。那么它应该如下所示

brand   payment_method
soap     Cash
soap      Card

如果我为soap这样的品牌提供价值,pay_method的价值为Cash.then它应该提供以下输出

brand   payment_method
soap     Cash

使用过的代码:

代码1:如果使用以下代码

select * from table1 where Brand=:brand and payment_method=:PM

其中:brand ='Soap'和:PM =''

它应该显示brand ='Soap'的价值..但由于和条件而且:PM是空白它没有显示记录

代码2:如果我使用以下或条件

select * from table1 where where :brand = 'Soap' or :PM ='card'

它应显示以下值:brand ='Soap'和:PM ='card'但它显示在records.pen品牌下面

brand payment_method
Soap  Card
pen   Card

任何使用SQL.please帮助我实现要求的方法

1 个答案:

答案 0 :(得分:0)

SELECT * 
FROM suppliers 
WHERE (state = 'California' AND supplier_id <> 900) OR (supplier_id = '');

这里它(supplier_id = '')没有返回,所以你只有加利福尼亚州。

但是

SELECT * 
FROM suppliers 
WHERE (state = 'California' AND supplier_id <> 900) OR (supplier_id = 100);

(supplier_id = 100)与华盛顿匹配,因为其supplier_id为100.

这些也处于OR状态,这是在上述查询中获得华盛顿的原因

示例

A or '' = A

A or B = AB

获得预期结果

SELECT * 
FROM suppliers 
WHERE (state = 'California') AND ((supplier_id <> 900) OR (supplier_id = 100))