Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从mysql结果中选择第一个和最后一个数据行?_Php_Mysql - Fatal编程技术网

Php 如何从mysql结果中选择第一个和最后一个数据行?

Php 如何从mysql结果中选择第一个和最后一个数据行?,php,mysql,Php,Mysql,SELECT*from User返回75个用户。当($row=mysql\u fetch\u assoc($result))时,是否可以选择第一个用户和第75个用户而不执行??怎么做 更新 更清楚的是:我需要选择*,因为我需要第一个和第75个用户,然后才能而mysql\u fetch\u assoc所以ASC、DESC、LIMIT不需要回答 SELECT * from User LIMIT 1 UNION SELECT * from User LIMIT 74,1 编辑 @Kay:PHP无法

SELECT*from User
返回75个用户。当($row=mysql\u fetch\u assoc($result))时,是否可以选择第一个用户和第75个用户而不执行
??怎么做

更新

更清楚的是:我需要
选择*
,因为我需要第一个和第75个用户,然后才能
而mysql\u fetch\u assoc
所以
ASC、DESC、LIMIT
不需要回答

SELECT * from User LIMIT 1
UNION
SELECT * from User LIMIT 74,1

编辑

@Kay:PHP无法在结果集创建后更改其内部顺序

如果查询总是返回75行,那么访问第一行和第75行的唯一方法是使用移动内部结果指针的方法:

$result = mysql_query('SELECT * from User');

mysql_data_seek($result, 1);
$row1 = mysql_fetch_assoc($result);

mysql_data_seek($result, 75);
$row75 = mysql_fetch_assoc($result);

请注意,如果上面后面跟着一个
,而
,则必须将指针重置到适当的位置。

如果可以对其排序,则可以

Select * from User order by [something] asc limit 1

编辑

我不确定我是否完全理解您的需求,但下面的内容会得到第一个和最后一个用户,然后是其他人

SELECT  um.SortOrder, u.*
FROM    Users u
        INNER JOIN (
          SELECT 1 AS SortOrder, MIN(UserID) AS UserID FROM Users
          UNION ALL SELECT 2, MAX(UserID) FROM Users
        ) um ON um.UserID = u.UserID
UNION ALL
SELECT  3 AS SortOrder, u.*
FROM    Users u
        LEFT OUTER JOIN (
          SELECT MIN(UserID) AS UserID FROM Users
          UNION ALL SELECT MAX(UserID) FROM Users
        ) um ON um.UserID = u.UserID
WHERE   um.UserID IS NULL
ORDER BY
        SortOrder

假设您有“id”作为主键,并且需要最后一个(而不是第75个),您可以尝试以下操作:

SELECT * FROM User WHERE id IN ((SELECT min(id) FROM user b), (SELECT max(id) FROM user c)) 

嗯,你问题的标题和你的解释有点不同

我这么说是因为如果你想选择第一行和最后一行,选择第一行和第75行可能会有所不同,因为如果行数增加或减少,最后一行可能不是第75行

回答第一行和最后一行的部分,我想你可以这样做

select distinct(id) from users where id in ((select max(id) from user), (select min(id) from users));
这个查询将很好地工作,希望用户是按id排序的

但是如果你说的是第一排和第七十五排,那么我会用@Saul的答案来解决


希望这有帮助

选择。。。id在(1,75)
?如果它不总是有75个用户,您可能需要运行两个查询,因为您不知道第一次有多少用户。。。除非可以执行
限制计数(*)-1,1
?可能不会。谢谢,但我还需要所有其他结果。我需要采取一些行动,以第一和其他记录之前,我循环通过。请参阅pdate。如果您有不同数量的结果,这是一个很好的解决方案!好主意。
SELECT 
(SELECT column FROM table WHERE [condition] ORDER BY column LIMIT 1) as 'first',
(SELECT column FROM table WHERE [condition] ORDER BY column DESC LIMIT 1) as 'last'
select distinct(id) from users where id in ((select max(id) from user), (select min(id) from users));
SELECT 
(SELECT column FROM table WHERE [condition] ORDER BY column LIMIT 1) as 'first',
(SELECT column FROM table WHERE [condition] ORDER BY column DESC LIMIT 1) as 'last'