我想知道以下查詢之間的區別。兩者都返回相同的值。我有關於INNER JOIN的想法,但我無法理解第一個查詢返回相同的值。MYSQL select count with count condition and join
SELECT *
FROM
`products`
WHERE
(
SELECT count(*)
FROM `categories`
WHERE `products`.`category_id` = `categories`.`id` AND `slug` = 'aprons'
) >= 1
AND `slug` <> 'products-1'
SELECT products.*
FROM
products
INNER JOIN categories ON categories.id = products.category_id
WHERE
products.slug <> 'products-1'
AND categories.slug = 'aprons'
第一個查詢幾乎肯定不會做你想要的。子查詢返回值不會更改返回的產品行,但更多的是開/關開關。 (ps感謝代碼重新格式化@Michael) – zanlok 2014-12-02 18:55:13
第一個查詢是做一個子查詢來查看結果集中的任何類別是否有「圍裙」的段落,並且只返回那些值(sans-「products-1」 )。第二個是做同樣的過濾器,但作爲一個整體,只記錄與分類表相關的記錄,並沒有一條「圍裙」。本質上,他們正在做同樣的過濾器,但方式不同。但是'INNER JOIN'查詢更具性能,因爲它不必爲每條記錄運行一個子查詢。 – Siyual 2014-12-02 18:56:49