2011-05-15 13 views
0

更多我已經在我的數據庫下表:SQLite的選擇是否會導致其他表N多

sessions     measurements 
--------     ------------ 
id      id 
etc.      session_id 
         etc. 

我要像做

SELECT * FROM sessions IF 
    (measurements HAS MORE THAN 0 RESULTS WHERE session_id=X) 

是這種查詢可以在SQLite的?

問候

回答

4

我不知道是否SQLite支持存在,所以我提供了兩種選擇:

SELECT * 
FROM sessions S 
WHERE EXISTS (SELECT 1 FROM measurements WHERE session_is = S.id) 

OR

SELECT * 
FROM sessions S 
WHERE (SELECT COUNT(*) FROM measurements WHERE session_is = S.id) > 0 
+1

'EXISTS'顯然更好,[y es,SQLite支持它](http://sqlite.org/lang_expr.html)。 – 9000 2011-05-15 09:02:55

+0

@ 9000 - 當然,很高興聽到這個支持。 – 2011-05-15 09:04:19

+0

在'... EXISTS(SELECT 1 FROM ...)'形式中,如果'session_id'不是唯一的,那麼考慮在內部的'SELECT'中增加'LIMIT 1'。 (我不知道查詢優化器有多好;如果它是愚蠢的,那麼LIMIT將大大減少產生結果所需的工作量。) – 2011-05-15 10:50:23

1

這將做到這一點:

select * from sessions where (select count(*) from measurements where session_id=X)>0