如何在mysql中获得独特的结果?

时间:2018-11-20 10:31:54

标签: mysql distinct

我想找到所有基于v_id 的常见文件

我有三个桌子

     detail

    ----------------------------
    |d_id    |v_id    |d_name
    |--------|--------|---------
    |1       |1       |detail_A
    |2       |1       |detail_B
    |3       |2       |detail_C

    file

    --------------------
    |f_id     |fname
    |---------|---------
    |1        | file_W
    |2        | file_X
    |3        | file_Y
    |4        | file_Z

    mapping

    ---------------------------------
    |m_id   | v_id    |d_id    |f_id
    |-------|---------|--------|-----
    |1      | 1       |1       |1
    |2      | 1       |1       |2
    |3      | 1       |2       |1
    |4      | 1       |2       |3
    |5      | 2       |3       |2
    |6      | 2       |3       |4

我尝试过的查询如下

SELECT f.f_id, f.fname
FROM mapping AS m
INNER JOIN detail AS d ON d.d_id=m.d_id
INNER JOIN file AS f ON m.f_id=f.f_id
WHERE m.v_id IN ('1','2')
GROUP BY m.f_id
HAVING COUNT(m.f_id) >=2

我想要作为file_X的结果,因为我的目标是基于v_id查找通用文件 但是使用上面的查询,我得到的是file_X,file_W

预期输出

-----------
|f_id |fname
------|---
|2    |file_X

1 个答案:

答案 0 :(得分:2)

您可以简单地计算Class Parent{ Child child; // setup child somehow public void callChildMethod(){ child.callMethod(); } } 的唯一值。因此,如果有两个v_id值;为了找到两个v_id值都可用的文件,您可以计算它们的唯一出现次数,它应该是2。

此外,如果v_id是整数,则可以使用v_id代替IN (1,2)。试试:

IN ('1', '2')