grabbing first row in a mysql query only

前端 未结 3 1420
庸人自扰
庸人自扰 2020-12-08 14:04

if i had a query such as

select * from tbl_foo where name = \'sarmen\'

and this table has multiple instances of name = sarmen how can i vir

相关标签:
3条回答
  • 2020-12-08 14:48

    To return only one row use LIMIT 1:

    SELECT *
    FROM tbl_foo
    WHERE name = 'sarmen'
    LIMIT 1
    

    It doesn't make sense to say 'first row' or 'last row' unless you have an ORDER BY clause. Assuming you add an ORDER BY clause then you can use LIMIT in the following ways:

    • To get the first row use LIMIT 1.
    • To get the 2nd row you can use limit with an offset: LIMIT 1, 1.
    • To get the last row invert the order (change ASC to DESC or vice versa) then use LIMIT 1.
    0 讨论(0)
  • 2020-12-08 14:58

    You can get the total number of rows containing a specific name using:

    SELECT COUNT(*) FROM tbl_foo WHERE name = 'sarmen'
    

    Given the count, you can now get the nth row using:

    SELECT * FROM tbl_foo WHERE name = 'sarmen' LIMIT (n - 1), 1
    

    Where 1 <= n <= COUNT(*) from the first query.

    Example:

    getting the 3rd row

    SELECT * FROM tbl_foo WHERE name = 'sarmen' LIMIT 2, 1
    
    0 讨论(0)
  • 2020-12-08 15:06

    You didn't specify how the order is determined, but this will give you a rank value in MySQL:

    SELECT t.*,
           @rownum := @rownum +1 AS rank
      FROM TBL_FOO t
      JOIN (SELECT @rownum := 0) r
     WHERE t.name = 'sarmen'
    

    Then you can pick out what rows you want, based on the rank value.

    0 讨论(0)
提交回复
热议问题