SQL查询等于不同字段的字段

时间:2017-08-08 12:45:15

标签: sql

在我的数据库中,我有3个字段:

property_id
e_id
name

我需要知道registers具有相同的property_id和名称,但不同的e_id

4 个答案:

答案 0 :(得分:3)

聚合属性和名称,然后计算不同e_id值的数量:

SELECT property_id, name
FROM yourTable
GROUP BY property_id, name
HAVING COUNT(DISTINCT e_id) > 1

请注意,如果property_id是唯一确定名称的主键,那么我们可以按属性进行汇总。

答案 1 :(得分:0)

自我联接可用于查找属性和名称的匹配项;并且通过使用<在E_ID上,我们确保我们只获得1个记录匹配,而不是它的反转。

Rextester Working Example

假设

  1. mySQL的;但是它没有特定的数据库逻辑,因此几乎可以在任何引擎上运行。
  2. 注册表是表中包含这3个唯一字段的记录。
  3. 所以

    +-------------+------+-------+---+
    | Property_ID | E_ID | Name  |   |
    +-------------+------+-------+---+
    |           1 |    1 | A     |   |
    |           1 |    1 | A     |   |
    |           2 |    1 | Test  |   |
    |           2 |    2 | Test  |   |
    |           3 |    2 | Test2 |   |
    |           3 |    3 | Test3 |   |
    |           4 |    4 | Test4 |   |
    |           5 |    5 | Test5 |   |
    |           6 |    7 | Test6 |   |
    |           6 |    6 | Test6 |   |
    +-------------+------+-------+---+
    

    数据:

    +-------------+------+-------+---+
    |           2 |    1 | Test  | 3 |
    |           6 |    6 | Test6 | 7 |
    +-------------+------+-------+---+
    

    给予:

    +-------------+------+-------+---+
    |             |      |       |   |
    |           2 |    2 | Test  | 1 |
    |           6 |    7 | Test6 | 6 |
    +-------------+------+-------+---+
    

    但不是:

    #include<stdio.h>
    #include<string.h>
    //Read only region start
    
    char* factorial (int input1)
    {
    
        //Read only region end
        //Write code here
    
    
    }
    

答案 2 :(得分:0)

SELECT e_id, property_id, name 
FROM  table1 
WHERE  e_id in (SELECT e_id 
                FROM table1 
                GROUP BY e_id  
                HAVING count(e_id) > 1)

答案 3 :(得分:-1)

您可以在此处使用group by子句 您的查询将是

select property_id, e_id , name from your_table groupby e_id