SQL 未返回预期结果

时间:2021-05-05 00:23:34

标签: mysql sql mariadb

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

markdown code **word in bold**

'``r
code chunk
'``

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

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

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)

我的表结构是

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

1 个答案:

答案 0 :(得分:1)

你没有具体说明你的期望,但我认为你只需要围绕你的条件:

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);