鍍金池/ 問答/數(shù)據(jù)庫/ 一個MySQL查詢語句

一個MySQL查詢語句

三個表c_item,c_attr,c_item_attr

c_item 表字段 item_id
c_attr 表字段 attr_id
c_item_attr 表字段 item_id、attr_id

比如數(shù)據(jù)
圖片描述

SELECT i.* FROM c_item i, c_item_attr ia WHERE i.item_id = ia.item_id AND ia.attr_id IN (4, 7, 14) GROUP BY i.item_id

用IN只有表中有就顯示,現(xiàn)在想必須同時滿足4, 7, 14,應該怎么寫


================================================================

意思是傳進來的數(shù)組,必須要c_item_attr 表里面的 attr_id 全部有才顯示,只要有一個沒,就不顯示

回答
編輯回答
失魂人

SELECT i.* FROM c_item i, c_item_attr ia WHERE i.item_id = ia.item_id AND ia.attr_id IN (4, 7, 14) GROUP BY i.item_id having count(i.item_id)>2

2018年4月19日 12:58
編輯回答
心癌
SELECT
    *
FROM
    (
        SELECT
            GROUP_CONCAT(attr_id) AS con_where,
            COUNT(*) AS count,
            c_item_attr.item_id
        FROM
            c_item_attr
        WHERE
            attr_id IN (4, 7,14)
        GROUP BY
            item_id
        HAVING
            count > 2
        ORDER BY
            attr_id
    ) AS con_where
WHERE
    con_where = "4, 7,14"
2018年3月25日 13:51
編輯回答
乖乖瀦
SELECT ia.* FROM c_item as i, c_item_attr as ia WHERE i.item_id = ia.item_id AND (4 AND 7 AND 14 IN (SELECT ia.attr_id from c_item_attr))
2018年6月6日 08:10