我遇到了严重的问题,需要解决方案。

我想从数据库中获取记录。
例如:当我搜索铅笔时,我将获得4条记录,当我搜索铅笔时,我将获得15条记录。
但是,如果要用Pencils或Pencil搜索,我想要15条记录。

这是mysql查询:

SELECT DISTINCT
    gc_products.name,
    gc_products.*,
    LEAST(IFNULL(NULLIF(saleprice, 0), price),
            price) AS sort_price
FROM
    (`gc_products`)
        JOIN
    `gc_group_product` ON `gc_group_product`.`product_id` = `gc_products`.`id`
        JOIN
    `gc_category_products` ON `gc_category_products`.`product_id` = `gc_products`.`id`
        JOIN
    `gc_categories` ON `gc_categories`.`id` = `gc_category_products`.`category_id`
WHERE
    `gc_products`.`enabled` = 1
        AND `gc_group_product`.`group_id` = 5
        AND (gc_products.name LIKE '%pencils%'
        OR gc_products.description LIKE '%pencils%'
        OR gc_products.excerpt LIKE '%pencils%'
        OR gc_products.sku LIKE '%pencils%')
        OR (gc_categories.name LIKE '%pencils%'
        OR gc_categories.excerpt LIKE '%pencils%');


希望我能得到答复

谢谢

最佳答案

请检查是否可行

 SELECT DISTINCT
gc_products.name,
gc_products.*,
LEAST(IFNULL(NULLIF(saleprice, 0), price),
        price) AS sort_price



    (gc_products
        加入
    gc_group_product开启gc_group_productproduct_id = gc_productsid
        加入
    gc_category_products开启gc_category_productsproduct_id = gc_productsid
        加入
    gc_categories开启gc_categoriesid = gc_category_productscategory_id
哪里
    gc_productsenabled = 1
        AND gc_group_productgroup_id = 5
        AND(gc_products.name LIKE CONCAT('%',TRIM(TRAILING BINARY(s')from'pencils'),'%')或gc_products.description LIKE CONCAT('%',TRIM(TRAILING BINARY('s' )FROM'pencils'),'%')或gc_products.excerpt LIKE CONCAT('%',TRIM(TRAILING BINARY(s')FROM'pencils'),'%')或gc_products.sku LIKE CONCAT('% ',TRIM(来自'pencils')的'TRAILING BINARY('s'),'%'))
        或(gc_categories.name LIKE CONCAT('%',TRIM(TRAILING BINARY(s')from'pencils'),'%')OR gc_categories.excerpt LIKE CONCAT('%',TRIM(TRAILING BINARY(s' )FROM'pencils'),'%'));

10-05 20:53