table1 table2 table3 Expected Result ------------- -------------- ------------- ------ | id | col1 | | id | col1 | | id | col1 | | id | ------------- -------------- ------------- ------ | 1 | val1 | | 2 | val1 | | 3 | val1 | | 1 | | 2 | val2 | | 2 | val2 | | 3 | val2 | | 6 | | 3 | val3 | | 4 | val1 | | 5 | val1 | ------ | 4 | val4 | | 4 | val2 | | 5 | val2 | | 5 | val5 | -------------- ------------ | 6 | val6 | -------------
我想选择不在table2和table3中的table1的id。为此,我编写了一个查询,但执行时间太长。请用更好的查询建议我。
我使用的查询是
SELECT DISTINCT(id) FROM table1 WHERE yacht_id NOT IN (SELECT id FROM table2 UNION SELECT id FROM table3 ORDER BY id)
答案 0 :(得分:2)
您的查询很好,但另一种方法是使用left join
s
select t1.id
from table1 t1
left join
table2 t2
on t1.id = t2.id
left join
table3 t3
on t1.id = t3.id
where t2.id is null and t3.id is null
这将保留table1
中的所有行,并在null
或table2
上无法使用table3
时将其与null
匹配。
从那里你要做的就是在table2
和table3
上过滤cmake -DBOOST_ROOT=$Path_to_Boost
cmake -DBoost_NO_BOOST_CMAKE=TRUE -DBOOST_ROOT=$Path_to_Boost
cmake -DBoost_NO_BOOST_CMAKE=TRUE -DBoost_NO_SYSTEM_PATH=TRUE -
DBOOST_ROOT=$Path_to_Boost
行。
答案 1 :(得分:2)
sudo apt-get install php-pear
sudo pear install mail
sudo pear install Net_SMTP
sudo pear install Auth_SASL
sudo pear install mail_mime
你能试试吗
答案 2 :(得分:1)
为什么不尝试两个单独的In Clause
SELECT * FROM table1 a
LEFT JOIN table2 b on a.id = b.id
LEFT JOIN table3 c on a.id = c.id
WHERE b.id is null and c.id is null