Mysql 如何按两个表上具有联接的字段进行筛选

Mysql 如何按两个表上具有联接的字段进行筛选,mysql,sql,Mysql,Sql,如何筛选查询我需要按名称筛选我需要一个查询 query=选择userstats.email作为电子邮件,计数(intento)作为尝试,user.access作为从userstats内部访问的访问,在user.email=userstats.email上通过电子邮件加入用户组 +---------------------------+----------+--------+ | email | Attemps |accesses| +----------

如何筛选查询我需要按名称筛选我需要一个查询

query=选择userstats.email作为电子邮件,计数(intento)作为尝试,user.access作为从userstats内部访问的访问,在user.email=userstats.email上通过电子邮件加入用户组

+---------------------------+----------+--------+
| 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';