Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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表 |----+--------+----------| | id | result |reference | |----+--------+----------| | 1 |ok | 33 | | 2 |ok | 46 | | 3 |ko | 55 | | 4 |ko | 55 | | 5 |ok | 55 | | 6 |ko | 47 | | 7 |ko | 89 | | 8 |ok | 91 | | 9 |ko | 47 | +----+--------+----------+_Mysql_Sql - Fatal编程技术网

选择一行,该行的列值仅在另一列刚刚获得某个值时才存在 请考虑下面的MySQL表 |----+--------+----------| | id | result |reference | |----+--------+----------| | 1 |ok | 33 | | 2 |ok | 46 | | 3 |ko | 55 | | 4 |ko | 55 | | 5 |ok | 55 | | 6 |ko | 47 | | 7 |ko | 89 | | 8 |ok | 91 | | 9 |ko | 47 | +----+--------+----------+

选择一行,该行的列值仅在另一列刚刚获得某个值时才存在 请考虑下面的MySQL表 |----+--------+----------| | id | result |reference | |----+--------+----------| | 1 |ok | 33 | | 2 |ok | 46 | | 3 |ko | 55 | | 4 |ko | 55 | | 5 |ok | 55 | | 6 |ko | 47 | | 7 |ko | 89 | | 8 |ok | 91 | | 9 |ko | 47 | +----+--------+----------+,mysql,sql,Mysql,Sql,我想选择result=ko和reference=47的行,因为reference 47不存在于result=ok的任何行中。除此之外,我只希望这一行出现一次,因为这种情况会出现两次id=6和id=9,尽管它可能会出现一次。事实上,在我请求的查询中,id=89的行也应该显示为reference=89,result=ko,没有其他reference=89,result=ok的行。 提前非常感谢 使用条件句,效果如下: IF EXISTS (Select TOP 1 * from <thista

我想选择result=ko和reference=47的行,因为reference 47不存在于result=ok的任何行中。除此之外,我只希望这一行出现一次,因为这种情况会出现两次id=6和id=9,尽管它可能会出现一次。事实上,在我请求的查询中,id=89的行也应该显示为reference=89,result=ko,没有其他reference=89,result=ok的行。
提前非常感谢

使用条件句,效果如下:

IF EXISTS (Select TOP 1 * from <thistable>
WHERE result='OK' AND reference=47)
SELECT Select TOP 1 * from <thistable>
WHERE result='OK' AND reference=47
ELSE
SELECT Select TOP 1 * from <thistable>
WHERE result='KO' AND reference=47
END

使用条件句,效果如下:

IF EXISTS (Select TOP 1 * from <thistable>
WHERE result='OK' AND reference=47)
SELECT Select TOP 1 * from <thistable>
WHERE result='OK' AND reference=47
ELSE
SELECT Select TOP 1 * from <thistable>
WHERE result='KO' AND reference=47
END
您可以使用:

您也可以使用自左连接来完成此操作:

SELECT DISTINCT x.result, x.reference 
FROM [dbo].[references] as x
LEFT JOIN
[dbo].[references] as y 
on x.reference = y.reference
and y.result = 'ok'
WHERE
y.reference IS NULL
您可以使用:

您也可以使用自左连接来完成此操作:

SELECT DISTINCT x.result, x.reference 
FROM [dbo].[references] as x
LEFT JOIN
[dbo].[references] as y 
on x.reference = y.reference
and y.result = 'ok'
WHERE
y.reference IS NULL

多谢了,杜加斯!我想你之前给我的第一个解决方案是可以的。我是说。。选择DISTINCT estado,referencea FROM envios WHERE NOT EXISTS选择*FROM envios AS tableA2,其中envios.estado='exito',但现在想象一下,我不是只有三列,而是七列,我想全部检索它们。我怎么能做到呢。在您开始提到的查询中,您只检索了两列,但我想要全部七列。谢谢你抽出时间来帮助我。我真的很感激!只需将它们添加到第一个选择中。谢谢duga,它工作得非常好。我使用了第二个选项,结果正是我所需要的!再次感谢!多谢了,杜加斯!我想你之前给我的第一个解决方案是可以的。我是说。。选择DISTINCT estado,referencea FROM envios WHERE NOT EXISTS选择*FROM envios AS tableA2,其中envios.estado='exito',但现在想象一下,我不是只有三列,而是七列,我想全部检索它们。我怎么能做到呢。在您开始提到的查询中,您只检索了两列,但我想要全部七列。谢谢你抽出时间来帮助我。我真的很感激!只需将它们添加到第一个选择中。谢谢duga,它工作得非常好。我使用了第二个选项,结果正是我所需要的!再次感谢!嗨,声音,谢谢你的时间。杜加的第二个选择正是我想要的。问候语!嗨,声音,谢谢你的时间。杜加的第二个选择正是我想要的。问候语!