在重复输入的情况下获取特定条目

时间:2014-05-14 09:09:44

标签: mysql sql sql-server

情况: 我有一个场景,我获取除了一个字段之外的所有字段相同的数据。我已经编写了一个存储过程来获取数据,使用来自不同表的许多连接。在我的情况下,我需要两种情况中的任何一种,具体取决于场景。 例如:

实际案例

  |UserId | First name | Last name | IsRequired | IsDeleted |
     1        harry          tom        true         false
     1        harry          tom        false        false
     3         ram            sham       true         false

情境:

如果IsRequired上有两条记录分别为true和false,那么我需要一个IsRequired为true的案例。

问题:

现在的问题是我需要过滤掉select语句中的记录。

所以任何人都知道如何在select语句中做到这一点。

预期案例

| UserId | First name | Last name | IsRequired | IsDeleted |
    1        harry          tom        true         false
    2        ram            sham       true         false

2 个答案:

答案 0 :(得分:1)

更新的解决方案:

SELECT UserId, First name, Last name, IsRequired, IsDeleted FROM table WHERE UserId IN (SELECT UserId FROM users GROUP BY UserId HAVING count(distinct(IsRequired)) > 1) and IsRequired = 'true'
UNION
SELECT UserId, First name, Last name, IsRequired, IsDeleted FROM table WHERE UserId IN (SELECT UserId FROM users GROUP BY UserId HAVING count(IsRequired) = 1)

请参阅http://sqlfiddle.com/#!3/d178f/1/0

重现了完全相同的数据库结构。

答案 1 :(得分:0)

试试这个:这是我的想法。

步骤1:首先将IsRequired的数据类型值更改为BOOLEAN。那么你所拥有的,在IsRequired列中包含的值如01

步骤2:然后使用MAX()。 查询是

SELECT userId,firstname,lastname,MAX(IsRequired),IsDeleted FROM `table_name` GROUP BY userId