Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 - Fatal编程技术网

MySQL-如果条件不唯一,则丢弃记录

MySQL-如果条件不唯一,则丢弃记录,mysql,Mysql,我正在尝试构建这个查询,我认为在不使用子查询的情况下对其进行优化有点复杂 | baggage_id | checkpoint | status | |------------|------------|--------| | 1 | 3 | 1 | | 2 | 3 | 1 | | 2 | 5 | 1 | | 3 | 3 |

我正在尝试构建这个查询,我认为在不使用子查询的情况下对其进行优化有点复杂

| baggage_id | checkpoint | status |
|------------|------------|--------|
| 1          | 3          | 1      |
| 2          | 3          | 1      |
| 2          | 5          | 1      |
| 3          | 3          | 0      |
| 4          | 3          | 1      |
| 5          | 3          | 1      |
| 6          | 3          | 0      |
这应该会回来

| baggage_id | checkpoint | status |
|------------|------------|--------|
| 1          | 3          | 1      |
| 4          | 3          | 1      |
| 5          | 3          | 1      |
我只需要bagagges_id,其中:

检查点=3 状态=1 没有检查点为5且状态为1的行李识别号 有人能帮我吗


谢谢。

一种方法是左连接,并在集合上折叠以排除

SELECT *
FROM bags b
LEFT JOIN (
   -- Find set of baggage_id's to exclude
   -- The group-by is to collapse the set to distinct baggage ID's
   -- to avoid increasing multiplicity.
   SELECT baggage_id, 1 as hasCheckpoint5AndStatus1
   FROM bags
   WHERE checkpoint = 5 AND status = 1
   GROUP BY baggage_id
) b2
ON b.baggage_id = b2.baggage_id
WHERE b.checkpoint = 3 AND b.status = 1
-- If NULL, then baggage_id is NOT excluded
AND b2.hasCheckpoint5AndStatus1 IS NULL

实际上,我正试图跳过子查询。我当前的查询非常类似,选择cp1.*,cp2.*从检查点作为cp1左连接选择*从检查点作为cp1.baggage\u id=cp2.baggage\u id,其中cp1.checkpoint=3和cp1.status=1,cp2.baggage\u id为空@noisedan应将其视为一个而非子查询,因为子查询通常具有负面含义,因为[ab]在select output子句中使用。谢谢,我将使用您的查询: