2012-11-08 444 views
0

我有2代表與值象下面這樣:MySQL的選擇結合多個條件

**tbl_users** 
user_ID  name  
1   somename1 
2   somename2 
3   somename3 

**tbl_interviews** 
int_ID  user_ID  answer   date  
1   1   sometextaba 2012-11-04 
2   2   sometextxcec 2012-10-05 
3   1   sometextabs 2011-06-04 
4   3   sometextxcfc 2012-11-04 
5   3   sometextxcdn 2012-11-04 

現在..我應該算的是今年已經interviewd人民和前幾年。 遺憾的是我沒能甚至選擇他們..我想是這樣的..但它不工作(不扔一個語法錯誤,但是給一個空的結果):

SELECT * FROM interviews WHERE ('YEAR(date) = 2012' AND 'YEAR(date) < 2012') 
+0

對不起..我想我放了一個壞問題...我的意思是這樣的:我怎麼才能問mysql告訴我誰是今年接受採訪的上表中唯一的用戶,但在過去幾年又接受了另一次採訪?唯一一個是id = 1的用戶(因爲他今年接受了一次採訪(int_id 1),但第一次採訪是在2011年(int-id 3)。) – razzetto

回答

1

你不能匹配均爲條件。你的意思是要麼條件

SELECT * FROM interviews WHERE ('YEAR(date) = 2012' OR 'YEAR(date) < 2012'); 

更好雖然,使得它可優化搜索

SELECT * FROM interviews WHERE date < '2013-01-01'); 

SELECT * FROM interviews WHERE date < CONCAT('''', YEAR(CURDATE()), '-01-01'''); 
0

嘗試像

SELECT * FROM interviews WHERE YEAR(date) <= YEAR(GETDATE()) 

GETDATE()基本上是給你的當前日期。

現在,如果你尋找到統計有多少人接受了採訪,將是這樣的

SELECT COUNT(DISTINCT(id)) FROM interviews WHERE YEAR(date) <= YEAR(GETDATE()) 
0

試試這個

select * from tbl_interviews where year(date)<='2012' 
0

您的查詢應該簡單地:

SELECT  COUNT(DISTINCT user_id) 
FROM  tbl_interviews 

解釋:你的問題是:「我應該數一下今年和今年接受採訪的人rs之前「。

首先,這一部分:「今年和之前幾年」是指今年以及今年之前每年接受採訪的人。由於你將來無法進行任何採訪,所以這基本上意味着所有采訪都會在一年中進行。

如果這不是你的意思,那麼請重新說明你的問題。 (我有一個想法,見下文)

至於「我應該算人」,我認爲你要指望每個接受採訪的人,不管他們做了多少採訪。這是通過簡單地計算獨特的user_id的,這是與COUNT完成(DISTINCT(USER_ID))現在

,您對「今年和今後幾年之前」完成的,也許你的意思是:

「我想查看今年我們採訪的用戶數量以及我們在今年之前採訪的用戶數量「,那麼查詢將是:

SELECT  (
      SELECT COUNT(DISTINCT user_id) 
      FROM tbl_interviews 
      WHERE date >= CONCAT(YEAR(current_date()), '-01-01') 
      ) thisyear 
,   (
      SELECT COUNT(DISTINCT user_id) 
      FROM tbl_interviews 
      WHERE date < CONCAT(YEAR(current_date()), '-01-01') 
      ) previousyears