2012-09-23 78 views
1

我有一個使用mysql數據庫的phpbb論壇。用戶由「user_id」標識。但是,他們有多個組。用戶將在「人」(9)或「殭屍」(8)組中。但是,他們將始終處於「註冊」(2)組中。這將創建一個表,看起來像這樣:根據列值忽略mysql行

mysql table

三個數據庫總共用來形成一個新表。

SELECT phpbb_users.user_id 'ID', 
IF(phpbb_user_group.group_id =9, 'Human', IF(phpbb_user_group.group_id =8, 'Zombie', '')) AS Team, 

IF(phpbb_profile_fields_data.pf_oz =1, 'Yes', ' ') AS OZ, 
phpbb_users.username 'Player', phpbb_users.user_email 'E-mail', 
IF(phpbb_profile_fields_data.pf_share_phonenum =1, phpbb_profile_fields_data.pf_phone_number, ' ') AS Phone, 
phpbb_profile_fields_data.pf_code 'Tag Code', 
phpbb_profile_fields_data.pf_student_id 'Student ID', phpbb_users.starve 'Time Remaining (in hours)' 
FROM phpbb_profile_fields_data, phpbb_users, phpbb_user_group 
WHERE phpbb_profile_fields_data.user_id = phpbb_users.user_id 
AND phpbb_profile_fields_data.user_id = phpbb_user_group.user_id 
LIMIT 0 , 300 

我需要從結果集中刪除「Team」(這是「registered」組的結果)下的空白字段的所有行。所有幫助表示讚賞!

回答

0

添加HAVING子句您WHERE條款的結尾,就像這樣:

WHERE phpbb_profile_fields_data.user_id = phpbb_users.user_id 
AND phpbb_profile_fields_data.user_id = phpbb_user_group.user_id 
HAVING Team <> '' 
LIMIT 0 , 300 

HAVING條款將使的MySQL做對查詢結果的另一個過濾通(包括任何聚合結果)和然後丟棄那些不符合HAVING條款的記錄。

您還可以有幾個條件HAVING子句中,像這樣的:

HAVING Team <> '' and Player <> 'First Last' 
+0

非常感謝!像魅力一樣工作。但是,這造成了一個小障礙。我有一個既是人類又是殭屍隊的主持人。我需要他不要出現在名單上。我嘗試了「HAVING Player <>'First Last'」,但是當有2個時,有聲明不起作用。 –

+0

您是否嘗試過HAVING Team <>''和Player <>'First Last'? – Nelson

+0

這樣做。非常感謝你 :) –