Mysql 为每个值选择两行

Mysql 为每个值选择两行,mysql,database,Mysql,Database,我的桌子看起来像这样: ID - USER - LOCATION 1 - Steve - home 2 - Steve - work 3 - Steve - school 4 - Eve - home 5 - Eve - work 6 - Eve - school 7 - RJ - school etc. 我如何从所有用户那里获得两个位置 编辑 输出应如下所示: ID - USER - LOCATION 1 - Steve - home 2 - Stev

我的桌子看起来像这样:

ID - USER  - LOCATION
1  - Steve - home
2  - Steve - work
3  - Steve - school
4  - Eve   - home
5  - Eve   - work
6  - Eve   - school
7  - RJ    - school
etc.
我如何从所有用户那里获得两个位置

编辑

输出应如下所示:

ID - USER  - LOCATION
1  - Steve - home
2  - Steve - work
4  - Eve   - home
5  - Eve   - work
7  - RJ    - school
比如:

SELECT a.USER
FROM YourTable a
WHERE LOCATION IN (
                   SELECT DISTINCT(b.LOCATION)
                   FROM YourTable b
                   WHERE USER = a.USER
                   LIMIT 2
                   )
或者,如果您需要两个特定位置:

SELECT USER
FROM YourTable
WHERE LOCATION = 'home' OR LOCATION = 'work'
编辑:

MySql(或某些版本)似乎不接受将
限制到子查询中

类似于:

SELECT a.USER
FROM YourTable a
WHERE LOCATION IN (
                   SELECT DISTINCT(b.LOCATION)
                   FROM YourTable b
                   WHERE USER = a.USER
                   LIMIT 2
                   )
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,USER  VARCHAR(12) NOT NULL
,LOCATION VARCHAR(12)
);

INSERT INTO my_table VALUES
(1  ,'Steve','home'),
(2  ,'Steve','work'),
(3  ,'Steve','school'),
(4  ,'Eve','home'),
(5  ,'Eve','work'),
(6  ,'Eve','school'),
(7  ,'RJ','school');
或者,如果您需要两个特定位置:

SELECT USER
FROM YourTable
WHERE LOCATION = 'home' OR LOCATION = 'work'
编辑:

似乎MySql(或某些版本)不接受子查询中的
LIMIT

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,USER  VARCHAR(12) NOT NULL
,LOCATION VARCHAR(12)
);

INSERT INTO my_table VALUES
(1  ,'Steve','home'),
(2  ,'Steve','work'),
(3  ,'Steve','school'),
(4  ,'Eve','home'),
(5  ,'Eve','work'),
(6  ,'Eve','school'),
(7  ,'RJ','school');
例如:

选择x*
从我的表x
加入我的桌子
在y.user=x.user上
和y.id
例如:

选择x*
从我的表x
加入我的桌子
在y.user=x.user上


和y.id您只需要通过select从表中获取2行?我的意思是每个用户有两行。您是否先尝试了一些select?您能否向我们展示您迄今为止所尝试的内容(包括任何错误消息)还有一个您想要的输出示例?您只需要通过select从表中获取两行?我的意思是每个用户两行。您是否先尝试了一些select?您能否向我们展示您迄今为止尝试的内容(包括任何错误消息)和您想要的输出示例?第一个查询仅返回具有前两个位置的用户(“home”和“work”),例如,不返回RJ。Distinct不是一个函数,没有order by的limit是没有意义的。第一个查询只返回具有前两个位置(“home”和“work”)的用户例如,RJ没有返回。Distinct不是一个函数,没有order by的限制是毫无意义的。就是这样!谢谢!你能告诉我如何按ID desc对它进行排序吗?我尝试了几种方法,但都不起作用。@EroStefano
和y.ID我没有找到任何解决方案。'从Trackme x选择x.*在y.user=x.user和y上加入Trackme y。id就是这样!谢谢!您能告诉我如何按id描述对其进行排序吗?我尝试了几种方法,但都不起作用。@EroStefano
和y.id我没有找到任何解决方案。'SELECT x.*FROM Trackme x JOIN Trackme y ON y.user=x.user和y.id