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

Mysql 将列与另一列进行比较

Mysql 将列与另一列进行比较,mysql,sql,select,join,Mysql,Sql,Select,Join,我想做一个查询,比较deliverable\u passed是否与deliverable\u id相同。如果它们相同,则不会打印相同的可交付内容\u id 这是我当前的查询是: deliverable_id deliverable_title deliverable_desc adviser_id passed_user deliverable_passed flag 1 SRS kogtong 1

我想做一个查询,比较
deliverable\u passed
是否与
deliverable\u id
相同。如果它们相同,则不会打印相同的
可交付内容\u id

这是我当前的查询是:

deliverable_id deliverable_title deliverable_desc adviser_id passed_user deliverable_passed flag
             1 SRS               kogtong                   1           0                  0    0
             2 WEBSITE           Lorem ipsum...            1           0                  0    0
             3 system            asdsadasdasdasd           1           0                  0    0
             4 software          sdgdThyiliul234           1           0                  0    0
             5 NULL              NULL                      1           4                  1    1
             6 NULL              NULL                      1           4                  2    1
当前输出是(基于
可交付的\u id
):1 2 3 4

比较后,我的预期输出是(基于
可交付成果\u id
):3 4


由于
可交付成果\u已通过
值1和2已存在。

这是否符合您的要求

SELECT * FROM deliverable
WHERE deliverable_id!=deliverable_passed

这是你想要的吗

SELECT * FROM deliverable
WHERE deliverable_id!=deliverable_passed

这是你想要的吗

SELECT * FROM deliverable
WHERE deliverable_id!=deliverable_passed

这是你想要的吗

SELECT * FROM deliverable
WHERE deliverable_id!=deliverable_passed

使用自连接检查通过的可交付成果

试试这个:

select d.*
from deliverable d
where exists (select 1 from deliverable d2 where d2.id = d.deliverable_passed) or
      exists (select 1 from deliverable d2 where d2.deliverable_passed = d.id);

使用自连接检查通过的可交付成果

试试这个:

select d.*
from deliverable d
where exists (select 1 from deliverable d2 where d2.id = d.deliverable_passed) or
      exists (select 1 from deliverable d2 where d2.deliverable_passed = d.id);

使用自连接检查通过的可交付成果

试试这个:

select d.*
from deliverable d
where exists (select 1 from deliverable d2 where d2.id = d.deliverable_passed) or
      exists (select 1 from deliverable d2 where d2.deliverable_passed = d.id);

使用自连接检查通过的可交付成果

试试这个:

select d.*
from deliverable d
where exists (select 1 from deliverable d2 where d2.id = d.deliverable_passed) or
      exists (select 1 from deliverable d2 where d2.deliverable_passed = d.id);

您希望选择所有不存在其可交付成果ID记录的可交付成果(具有标题)。因此使用“不存在”:

SELECT d1.* 
FROM deliverable d1 
LEFT OUTER JOIN deliverable d2 ON d2.deliverable_id = d1.deliverable_passed
WHERE d2.deliverable_id IS NULL
或者更简单,不在:

SELECT * 
FROM deliverable
WHERE deliverable_title is not null
AND NOT EXISTS
(
  SELECT * FROM deliverable passed
  WHERE passed.deliverable_passed = deliverable.deliverable_id 
);

(但Aleks G是对的。这是一个糟糕的数据库设计,您应该更改它。)

您想选择所有不存在记录且其可交付内容ID为的可交付内容(有标题)。因此,请使用“不存在”:

SELECT d1.* 
FROM deliverable d1 
LEFT OUTER JOIN deliverable d2 ON d2.deliverable_id = d1.deliverable_passed
WHERE d2.deliverable_id IS NULL
或者更简单,不在:

SELECT * 
FROM deliverable
WHERE deliverable_title is not null
AND NOT EXISTS
(
  SELECT * FROM deliverable passed
  WHERE passed.deliverable_passed = deliverable.deliverable_id 
);

(但Aleks G是对的。这是一个糟糕的数据库设计,您应该更改它。)

您想选择所有不存在记录且其可交付内容ID为的可交付内容(有标题)。因此,请使用“不存在”:

SELECT d1.* 
FROM deliverable d1 
LEFT OUTER JOIN deliverable d2 ON d2.deliverable_id = d1.deliverable_passed
WHERE d2.deliverable_id IS NULL
或者更简单,不在:

SELECT * 
FROM deliverable
WHERE deliverable_title is not null
AND NOT EXISTS
(
  SELECT * FROM deliverable passed
  WHERE passed.deliverable_passed = deliverable.deliverable_id 
);

(但Aleks G是对的。这是一个糟糕的数据库设计,您应该更改它。)

您想选择所有不存在记录且其可交付内容ID为的可交付内容(有标题)。因此,请使用“不存在”:

SELECT d1.* 
FROM deliverable d1 
LEFT OUTER JOIN deliverable d2 ON d2.deliverable_id = d1.deliverable_passed
WHERE d2.deliverable_id IS NULL
或者更简单,不在:

SELECT * 
FROM deliverable
WHERE deliverable_title is not null
AND NOT EXISTS
(
  SELECT * FROM deliverable passed
  WHERE passed.deliverable_passed = deliverable.deliverable_id 
);


(但Aleks G是对的。这是一个糟糕的数据库设计,你应该改变它。)

为什么你不能得到5和6?@GordonLinoff 5和6将是我的记录,即用户提交了可交付成果。1234是一个恒定的记录。因此,如果5和6超过了12,它将只显示3和4。您的数据库设计似乎相当糟糕。您正在使用同一个表来存储哪些可交付成果以及谁提交了哪些可交付成果。你应该把它分为两个表——一个是可交付的,一个是提交的——这样你会发现查询信息要容易得多。我正在更改我的数据库,拆分表中的可交付成果,并添加一个新的表,拆分上表中的最后3列。为什么不得到5和6?@GordonLinoff 5和6将是我的记录,用户提交了可交付成果。1234是一个恒定的记录。因此,如果5和6超过了12,它将只显示3和4。您的数据库设计似乎相当糟糕。您正在使用同一个表来存储哪些可交付成果以及谁提交了哪些可交付成果。你应该把它分为两个表——一个是可交付的,一个是提交的——这样你会发现查询信息要容易得多。我正在更改我的数据库,拆分表中的可交付成果,并添加一个新的表,拆分上表中的最后3列。为什么不得到5和6?@GordonLinoff 5和6将是我的记录,用户提交了可交付成果。1234是一个恒定的记录。因此,如果5和6超过了12,它将只显示3和4。您的数据库设计似乎相当糟糕。您正在使用同一个表来存储哪些可交付成果以及谁提交了哪些可交付成果。你应该把它分为两个表——一个是可交付的,一个是提交的——这样你会发现查询信息要容易得多。我正在更改我的数据库,拆分表中的可交付成果,并添加一个新的表,拆分上表中的最后3列。为什么不得到5和6?@GordonLinoff 5和6将是我的记录,用户提交了可交付成果。1234是一个恒定的记录。因此,如果5和6超过了12,它将只显示3和4。您的数据库设计似乎相当糟糕。您正在使用同一个表来存储哪些可交付成果以及谁提交了哪些可交付成果。你应该把它分为两个表——一个是可交付的,一个是提交的——这样你会发现查询信息要容易得多。我正在更改我的数据库,拆分表的可交付成果,并添加一个新的表,拆分上表的最后3列。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码行得通。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码行得通。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码行得通。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码有效