Mysql 如何按两个表上具有联接的字段进行筛选
如何筛选查询我需要按名称筛选我需要一个查询 query=选择userstats.email作为电子邮件,计数(intento)作为尝试,user.access作为从userstats内部访问的访问,在user.email=userstats.email上通过电子邮件加入用户组Mysql 如何按两个表上具有联接的字段进行筛选,mysql,sql,Mysql,Sql,如何筛选查询我需要按名称筛选我需要一个查询 query=选择userstats.email作为电子邮件,计数(intento)作为尝试,user.access作为从userstats内部访问的访问,在user.email=userstats.email上通过电子邮件加入用户组 +---------------------------+----------+--------+ | email | Attemps |accesses| +----------
+---------------------------+----------+--------+
| email | Attemps |accesses|
+---------------------------+----------+--------+
| felixcriv@gmail.com | 84 | 29 |
| felixcriv@me.com | 1 | 0 |
| geronimo_76@hotmail.com | 1 | 0 |
| gramirezcarrero@gmail.com | 128 | 90 |
+---------------------------+----------+--------+
4 rows in set (0.00 sec)
第一张桌子
+-------------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+-------------------+-----------------------------+
| email | varchar(55) | NO | PRI | NULL | |
| names | varchar(60) | NO | | NULL | |
| password | text | NO | | NULL | |
| privileges | int(11) | YES | | 2 | |
| accesses | int(11) | NO | | 0 | |
| last_access | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| logged | int(11) | YES | | 0 | |
| ip_machine | varchar(35) | NO | | 0 | |
| session_id | text | NO | | NULL | |
| platform | text | NO | | NULL | |
| status | int(11) | YES | | 0 | |
+-------------+-------------+------+-----+-------------------+-----------------------------+
一组11行(0.00秒)
第二张桌子
+-------------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+-------------------+-----------------------------+
| iduserStats | int(11) | NO | PRI | NULL | auto_increment |
| ip_machine | varchar(45) | NO | | NULL | |
| email | varchar(45) | NO | | NULL | |
| intento | int(11) | YES | | NULL | |
| logged | int(11) | YES | | NULL | |
| fechaHora | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+-------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)
我需要画一张类似的表格:
+---------------------------+----------+--------+
| nombres | intentos |logeos |
+---------------------------+----------+--------+
| name | 84 | 29 |
| name2 | 1 | 0 |
| name3 | 1 | 0 |
| name4 | 128 | 90 |
+---------------------------+----------+--------+
那你可以试试-
select names , --userstats.email as email,
count(intento) as Attempts,
user.accesses as Accesses
from userstats inner join user
on user.email = userstats.email
group by Email, names
那你可以试试-
select names , --userstats.email as email,
count(intento) as Attempts,
user.accesses as Accesses
from userstats inner join user
on user.email = userstats.email
group by Email, names
您不能修改查询以返回名称而不是电子邮件吗?如下所示:选择userstats.names作为名称,count(intento)作为尝试,user.access作为从userstats内部连接user on user.email=userstats.email-group by-email的访问@德米特里·雷兹尼克:-投了赞成票,因为我也说了同样的…:)但是你忘了把名字放在GROUPBY子句中。@pratikgarg:如果
Email
是主键,你就不必把user.name
放在MySQL的GROUPBY
中。但是如果您想遵循标准,您应该添加user.accesss
以及user.name
。在mysql中,是否可以在包含group by子句的语句中选择非group by列?。。到目前为止,我在oracle数据库系统中工作。。在Oracle中,您不能这样做。@pratikgarg:是的,这是可能的,尽管建议谨慎行事。您不能修改查询以返回名称而不是电子邮件吗?如下所示:选择userstats.names作为名称,count(intento)作为尝试,user.access作为从userstats内部连接user on user.email=userstats.email-group by-email的访问@德米特里·雷兹尼克:-投了赞成票,因为我也说了同样的…:)但是你忘了把名字放在GROUPBY子句中。@pratikgarg:如果Email
是主键,你就不必把user.name
放在MySQL的GROUPBY
中。但是如果您想遵循标准,您应该添加user.accesss
以及user.name
。在mysql中,是否可以在包含group by子句的语句中选择非group by列?。。到目前为止,我在oracle数据库系统中工作。。在甲骨文中,你不能这样做。@pratikgarg:是的,这是可能的,尽管政府建议谨慎行事。你救了我的命。。我非常感谢您查阅电子邮件选择名称,--userstats.email作为电子邮件,count(intento)作为尝试,user.accesss作为访问从userstats内部加入user.email=userstats.email where user.email like'name@gmail.com';你救了我的命。。我非常感谢您查阅电子邮件选择名称,--userstats.email作为电子邮件,count(intento)作为尝试,user.accesss作为访问从userstats内部加入user.email=userstats.email where user.email like'name@gmail.com';