簡體   English   中英

基本SQL子查詢

[英]Basic SQL sub-query

我有一張桌子叫做產品。 基本上,我需要在這樣的各個字段中使用相同的單詞進行搜索,這很好用。

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

我從多個國家/地區獲得結果,我在做什么錯呢?

提前致謝

您只需要對您的條件進行分組,

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%"
        )

您不需要其他聯接。 只需將條件添加到帶有適當括號的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

我認為這里的限制是適當的,盡管我不確定問題的意圖是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM