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列。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码行得通。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码行得通。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码行得通。我同意,这是我的错。不高效的数据库设计。目前正在更改我的数据库设计。但是谢谢你的回答,这个代码有效