SQL 未返回预期结果

军事

当我将这段 SQL 输入 PHPMyAdmin 时,它返回的结果与我期望的不符

SELECT
    *
FROM
    `wtlaptop`
WHERE
    `laptopgpu` LIKE '%GTX%'
    OR
    `laptopgpu` LIKE '%RTX%'
    AND
    `memorysize` LIKE '%16GB%'
    OR
    `memorysize` LIKE '%32GB%'
    OR
    `memorysize` LIKE '%64GB%'
    AND
    `laptopbrand` LIKE '%Asu%'
ORDER BY
    ABS(`productprice` - 3145)

我的意图是找到华硕制造的具有 GTX GPU 或 RTX GPU 和 16GB 或 32GB 内存的笔记本电脑,然后从最接近用户输入的价格订购。

但是,当我在 PHPMyAdmin 中运行此查询时,我得到的结果是 8GB 内存,而结果不是来自华硕等品牌的。例子

3128
Intel Core i7
32GB
Nvidia GTX 1650 Ti
Windows 10 Home
HP

我的表结构是

productprice varchar(61),
cpufamily    varchar(25),
memorysize   varchar(20),
laptopgpu    varchar(28),
laptopos     varchar(32),
laptopbrand  varchar(9)
戈登·利诺夫

您没有指定您的期望,但我认为您只需要围绕您的条件进行括号:

SELECT *
FROM `wtlaptop`
WHERE (`laptopgpu` LIKE '%GTX%' OR `laptopgpu` LIKE '%RTX%') AND 
      (`memorysize` LIKE '%16GB%' OR `memorysize` LIKE '%32GB%' OR `memorysize` LIKE '%64GB%') AND
      `laptopbrand` LIKE '%Asu%'
ORDER BY ABS(`productprice` - 3145);

您还可以使用正则表达式简化此操作:

SELECT *
FROM `wtlaptop`
WHERE `laptopgpu` REGEXP 'GTX|RTX' AND
      `memorysize` REGEXP '16GB|32GB|64GB' AND
      `laptopbrand` LIKE '%Asu%'
ORDER BY ABS(`productprice` - 3145);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章