Php mysql函数显示25岁以下的用户?
有人能帮我吗?我正在尝试让我的mysql查询显示我网站上所有18-25岁的用户,目前正在这样做,但它会重复相同的结果/相同的用户大约20次 我只想在查询中显示每个结果/每个用户一次。有人能告诉我哪里出了问题吗?谢谢 年龄是以varchar(11)的形式记录在数据库中的,我使用年龄与我的出生日期分开,这是一个时间戳,但我需要将年龄设置为与出生日期分开,所以我使用varchar列 因此,为了清楚起见,我正在尝试显示25岁以下的所有用户(不会重复结果,也不会对每个结果重复一个以上的用户) 功能:Php mysql函数显示25岁以下的用户?,php,mysql,Php,Mysql,有人能帮我吗?我正在尝试让我的mysql查询显示我网站上所有18-25岁的用户,目前正在这样做,但它会重复相同的结果/相同的用户大约20次 我只想在查询中显示每个结果/每个用户一次。有人能告诉我哪里出了问题吗?谢谢 年龄是以varchar(11)的形式记录在数据库中的,我使用年龄与我的出生日期分开,这是一个时间戳,但我需要将年龄设置为与出生日期分开,所以我使用varchar列 因此,为了清楚起见,我正在尝试显示25岁以下的所有用户(不会重复结果,也不会对每个结果重复一个以上的用户) 功能: fu
function categories_agegroup_under25() {
global $connection;
$query = "SELECT *
FROM ptb_users, ptb_stats
WHERE ptb_users.account_type = \"User\" AND ptb_users.account_status = \"Active\" AND ptb_stats.user_id = ptb_users.id
AND ptb_stats.user_age='18' OR ptb_stats.user_age='19' OR ptb_stats.user_age='21' OR ptb_stats.user_age='22' OR ptb_stats.user_age='23' OR ptb_stats.user_age='24' OR ptb_stats.user_age='25'
ORDER BY ptb_stats.user_age DESC
LIMIT 0,40";
$categories_under25_set = mysql_query($query, $connection);
confirm_query($categories_under25_set);
return $categories_under25_set;
}
php:
ptb_stats.user_年龄在18到25岁之间
试试类似的方法
SELECT DISTINCT username FROM ...
您得到重复结果的另一个原因是您使用了表1、表2中的,而您应该使用JOIN
语句,因为第一个语句将执行表叉积。您与和以及或发生冲突
试试这个
SELECT *
FROM ptb_users, ptb_stats
WHERE ptb_users.account_type = \"User\"
AND ptb_users.account_status = \"Active\"
AND ptb_stats.user_id = ptb_users.id
AND ptb_stats.user_age in (18,19,20,21,22,23,24,25)
GROUP BY ptb_stats.user_id
ORDER BY ptb_stats.user_age DESC
LIMIT 0,40
为什么这个年龄的varchar是11,而不是int(3)?@John这是继表叉积之后我注意到的第二件事。这需要重写两件事:1)时间戳不会显示1970年之前出生的用户。2) 存储年龄和DoB是错误的数据库规范化。
SELECT *
FROM ptb_users, ptb_stats
WHERE ptb_users.account_type = \"User\"
AND ptb_users.account_status = \"Active\"
AND ptb_stats.user_id = ptb_users.id
AND ptb_stats.user_age in (18,19,20,21,22,23,24,25)
GROUP BY ptb_stats.user_id
ORDER BY ptb_stats.user_age DESC
LIMIT 0,40