我有一个由no(auto increment)user(varchar)timein (timestamp)timeout (timestamp)组成的数据库表。

我想获得多个用户超时和超时,但在获取时遇到一些问题。

我能得到的最接近的是:

SELECT * FROM userdata WHERE no IN (SELECT MIN(no) FROM userdata GROUP BY user)
UNION
SELECT * FROM userdata WHERE no IN (SELECT MAX(no) FROM userdata GROUP BY user)


我得到的输出是:

[{"no":"1","user":"Alan","timein":"2017-01-12 12:31:19","timeout":"0000-00-00 00:00:00"},{"no":"3","user":"Alan","timein":"2017-01-12 12:34:00","timeout":"2017-01-12 12:34:00"}]


我有什么办法可以让不同的用户(因此输出不会重复)并在单行SQL中显示MIN(timein)和MAX(timeout)?

所需的输出:{“ user”:“ Alan”,“ timein”:“ 12:31:19”,“ timeout”:“ 12:34:00”}

|---------------------|------------------|------------|------------|
|         no          |     user         |   timein   |   timeout  |
|---------------------|------------------|------------|------------|
|          1          |        Alan      |12:31:19    | 12:31:19   |
|---------------------|------------------|------------|------------|
|          2          |        Bill      |12:33:00    | 12:33:00   |
|---------------------|------------------|------------|----------- |
|          3          |        Alan      |12:34:00    | 12:34:00   |
|---------------------|------------------|------------|----------- |

最佳答案

SELECT user, MIN(timein), MAX(timeout)
FROM userdata
GROUP BY user


尝试这样做,使用group by语句,也许可以为您提供帮助。

关于mysql - SQL SELECT非重复查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41605610/

10-16 17:22