2

我有一张名为 products 的表。基本上我需要在这样的各个字段中使用相同的单词进行搜索,这样可以正常工作。

SELECT
    `id`,
    `product-id`,
    `country`,
    `name`,
    `description`,
    `branch`,
    `stock`,
    `price`
FROM
    `products`
WHERE
    `name` LIKE "%car%"
OR `description` LIKE "%car%"
OR `branch` LIKE "%car%"
OR `product-id` LIKE "%car%"

问题是现在我想要一个不同的查询。我只想显示来自特定国家/地区的所有汽车,以及其他字段。所以如果我运行这个查询

SELECT
    DISTINCT(b.`id`) id,
    a.id,
    a.`product-id`,
    a.`country`,
    a.`name`,
    a.`description`,
    a.`branch`,
    a.`stock`,
    a.`price`
FROM
    `products` as a,
(
    SELECT
        *
    FROM
        `products`
    WHERE
        `country` = "Canada"
    LIMIT 0,
    10
)AS b
WHERE
    a.`id` = b.`id`
OR  b.`product-id` LIKE "%car%"
OR  b.`name` LIKE "%car%"
OR  b.`branch` LIKE "%car%"
OR  b.`description` LIKE "%car%"

LIMIT 0, 10

我从多个国家/地区获得结果,我做错了什么?

提前致谢

4

2 回答 2

2

您不需要额外的连接。只需将条件添加到where带有适当括号的子句中:

SELECT
    `id`,
    `product-id`,
    `country`,
    `name`,
    `description`,
    `branch`,
    `stock`,
    `price`
FROM
    `products`
WHERE
    country = 'Canada' and
    ( `name` LIKE "%car%"
     OR `description` LIKE "%car%"
     OR `branch` LIKE "%car%"
     OR `product-id` LIKE "%car%"
    )
limit 30

我认为这个限制在这里是合适的,尽管我不确定问题的意图是什么。

于 2013-02-12T03:20:09.617 回答
2

你只需要对你的条件进行分组,

SELECT  ...
FROM    ...
WHERE   (a.`id` = b.`id`) AND
        (  
            b.`product-id` LIKE "%car%" OR  
            b.`name` LIKE "%car%" OR  
            b.`branch` LIKE "%car%" OR  
            b.`description` LIKE "%car%"
        )
于 2013-02-12T03:18:04.963 回答