1

我有一个使用 mysql 数据库的 phpbb 论坛。用户由“user_id”标识。但是,他们有多个组。用户将属于“人类”(9)或“僵尸”(8)组。但是,它们将始终位于“已注册”(2) 组中。这将创建一个如下所示的表:

mysql表

总共使用三个数据库来形成一个新表。

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

我需要从结果集中删除“团队”下所有带有空白字段的行(这是“注册”组的结果)。感谢所有帮助!

4

1 回答 1

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'
于 2012-09-23T05:28:49.493 回答