SELECT year,
(SELECT name FROM users WHERE users.id=packages.id_user_sender) as sender,
(SELECT name FROM users WHERE users.id=packages.id_user_receiver) as receiver
FROM packages
WHERE (color='blue' or year=2015) and
(id_user_sender, id_user_receiver) NOT IN
(SELECT id FROM users WHERE address='Taiwan')
ORDER BY year DESC, sender DESC;
我想做這樣的事情,但它不起作用。所以我不得不這樣寫。
SELECT year,
(SELECT name FROM users WHERE users.id=packages.id_user_sender) as sender,
(SELECT name FROM users WHERE users.id=packages.id_user_receiver) as receiver
FROM packages
WHERE (color='blue' or year=2015) and
id_user_sender NOT IN
(SELECT id FROM users WHERE address='Taiwan') and
id_user_receiver NOT IN
(SELECT id FROM users WHERE address='Taiwan')
ORDER BY year DESC, sender DESC;
簡而言之,我想將這些線條合二為一。我怎樣才能做到這一點?
id_user_sender NOT IN
(SELECT id FROM users WHERE address='Taiwan') and
id_user_receiver NOT IN
(SELECT id FROM users WHERE address='Taiwan')
uj5u.com熱心網友回復:
您可以使用 NOT EXISTS 條件:
SELECT ...
FROM packages p
WHERE (color='blue' or year=2015)
and not exists (select *
from users u
where u.address = 'Taiwan'
and u.id in (p.id_user_sender, p.id_user_receiver))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380154.html
標籤:sql PostgreSQL的
上一篇:聚合視窗函式和外連接
