如果找到两个条目,则返回零个条目

时间:2019-02-20 09:27:00

标签: mysql

我在一个小项目上工作,用户可以在其中激活和停用警报。 它包含几个实体,但是要重点关注的是“警报”和“警报活动”。 我的意图是,如果警报活动同时包含“触发”和“取消”事件,则它们应该互相抵消。

查询如下:

SELECT DISTINCT alarmid, 
                                                unixtimestamp, 
                                                latitude, 
                                                longitude, 
                                                severity, 
                                                u.userid AS requestuserid, 
                                                u.names AS requestname, 
                                                aa.alarmevent AS alarmevent
                                            FROM alarms AS a
                                            LEFT JOIN users AS u ON userid = useridfk
                                            RIGHT JOIN usersgroups AS ug ON a.groupidfk = ug.groupidfk
                                            RIGHT JOIN alarmactivity AS aa ON a.alarmid = aa.alarmidfk
                                            WHERE unixtimestamp > (UNIX_TIMESTAMP()-1800)
                                            ORDER BY requestuserid

...并返回如下内容: enter image description here

结果基于以下实体:

警报

enter image description here

警报事件

enter image description here

在这种情况下,它应该返回零行。可以一次设置多个警报,因此,如果它包含两个“触发”行和一个“已取消”警报,则它应仅返回尚未取消的警报。 我尝试了不同的IF解决方案,但是由于它涉及一次检查几行,因此我有点卡住了。

我也尝试了PHP解决方案,但是由于某种原因,它仅在50%的时间内返回零行-因此,我尝试使用更优雅的解决方案,并希望它能同时解决此问题时间。

可以给我一个正确的方向吗?

编辑:只是忘记提及已取消的警报永远无法重新激活-因此另一个警报将在“警报”中生成新的一行。 另外,我不只是从实体中删除警报的原因是我想跟踪激活的警报。

1 个答案:

答案 0 :(得分:1)

代替D:/test/dst  可以

FULL_PATH_TO_PYTHON_INTERPRTER -m spacy download en