SQL中的子集数据:

时间:2017-09-16 15:29:43

标签: mysql sql

考虑一个名为记录的表,其中包含列(名称(TEXT),价格(INT),颜色(TEXT),车辆类型(TEXT))。

 select name, price, color, vehicletype where 
  

"如果是黑色轿车,我准备支付10,000,但如果是红色或   白色,然后不超过8,000。对于任何其他颜色,我不会胜过   7,000,除非是SUV,在这种情况下,我的预算高达15,000   对于黑色的,或对于任何其他颜色,最多为14,000。"

使用where子句与"和"回答了这个问题和"或"。寻找一种更有效的方法来解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可以尝试UNIONUNION ALL例如

Select * from table where color = 'black' and price <= 10000
UNION
Select * from table where color in ('red', 'white') and price <= 8000
UNION

答案 1 :(得分:0)

  

如果是黑色轿车,我准备支付10,000,但如果是红色或   白色,然后不超过8,000。对于任何其他颜色,我不会胜过   7,000,除非是SUV,在这种情况下,我的预算高达15,000   对于黑色的,或对于任何其他颜色,最多为14,000。

SELECT name, price, color, vehicletype FROM table
 WHERE (UPPER(vehicletype) = 'SEDAN'
   AND ((UPPER(color) = 'BLACK' AND price <= 10000)
    OR (UPPER(color) IN ('RED','WHITE') AND price <= 8000)
    OR (UPPER(color) NOT IN ('BLACK','RED','WHITE') AND price <= 7000)))
    OR (UPPER(vehicletype) = 'SUV'
   AND ((UPPER(color) = 'BLACK' AND price <= 15000)
    OR (UPPER(color) != 'BLACK' AND price <= 14000)))