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