Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在重复条目的情况下获取特定条目_Mysql_Sql_Sql Server - Fatal编程技术网

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

Mysql 在重复条目的情况下获取特定条目,mysql,sql,sql-server,Mysql,Sql,Sql Server,情况: 我有一个场景,在这个场景中,除了一个字段之外,所有字段都是相同的。我编写了一个存储过程,使用不同表中的许多连接来获取数据。在我的情况下,我需要两种情况中的任何一种,具体取决于场景。 例如: 实际案例 |UserId | First name | Last name | IsRequired | IsDeleted | 1 harry tom true false 1 harry

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

实际案例

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

| UserId | First name | Last name | IsRequired | IsDeleted |
    1        harry          tom        true         false
    2        ram            sham       true         false
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)
若有两条记录分别为IsRequired true和false,那个么我需要一个IsRequired true的案例

问题:

| UserId | First name | Last name | IsRequired | IsDeleted |
    1        harry          tom        true         false
    2        ram            sham       true         false
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)
现在的问题是,我需要过滤掉select语句中的记录

因此,任何人都不知道如何在select语句中实现这一点

预期情况:

| UserId | First name | Last name | IsRequired | IsDeleted |
    1        harry          tom        true         false
    2        ram            sham       true         false
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)

更新的解决方案:

| UserId | First name | Last name | IsRequired | IsDeleted |
    1        harry          tom        true         false
    2        ram            sham       true         false
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)
请看


复制了完全相同的数据库结构。

试试这个:这是我的主意

步骤1:首先将IsRequired的数据类型值更改为
布尔值
。因此,在IsRequired列中,您所拥有的内容包含类似于
0
1
的值

步骤2:然后使用MAX()。 疑问是


在select queryDo中尝试Distinct您需要MySQL的解决方案吗,SQL Server或两者兼而有之?
select*from table where IsRequired='true'
?我不能使用select*from table where IsRequired='true',因为它将使用IsRequired true筛选其他记录。获取错误选择列表,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。哦。您正在使用SQL Server吗?我以为你需要MySQL的解决方案。我已经更新了答案。请现在检查并告诉我它是否有效。我现在没有安装SQL Server的版本,因此无法确定它是否能正常工作。它不工作计数>0返回零记录。它工作正常。我已经在sql FIDLE中复制了相同的数据库结构。见此: