情景:--我有一个场景,在这个场景中,除了一个字段之外,所有字段都是相同的。我编写了一个存储过程,它使用来自不同表的多个联接来获取数据。在我的例子中,我需要这两种情况中的任何一种,这取决于场景。例:
实际案例
|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发布于 2014-05-14 09:21:45
更新解决方案:
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
复制了完全相同的数据库结构。
发布于 2014-05-14 09:50:41
试试这个:只是这是我的主意。
步骤1:首先,将IsRequired的数据类型值更改为BOOLEAN。因此,在IsRequired列中,您拥有的内容包含了类似于0或1的值。
步骤2:然后使用MAX()。查询是
SELECT userId,firstname,lastname,MAX(IsRequired),IsDeleted FROM `table_name` GROUP BY userIdhttps://stackoverflow.com/questions/23650246
复制相似问题