如何编写mysql查询以精确返回4行

如何编写mysql查询以精确返回4行,mysql,Mysql,我想显示表中的4行。我使用下面的查询 从tbl_name中选择字段_name,其中col_name=‘value’LIMIT 4 该表包含4个以上的值意味着它可以完美地显示前4行。但它少于4行意味着我需要以下结果的结果 它仅显示2行表示 字段名称 第1行 第2行 第2行 第1行 它只显示3行意味着 字段名称 第1行 第2行 第3行 第1行 如何获得此结果?这不是一个很好的解决方案,但它应该可以工作:您可以使用UNION ALL重复查询4次,并限制为4个结果: SELECT * FROM (

我想显示表中的4行。我使用下面的查询

从tbl_name中选择字段_name,其中col_name=‘value’LIMIT 4

该表包含4个以上的值意味着它可以完美地显示前4行。但它少于4行意味着我需要以下结果的结果

  • 它仅显示2行表示
  • 字段名称
    第1行
    第2行
    第2行
    第1行

  • 它只显示3行意味着
  • 字段名称
    第1行
    第2行
    第3行
    第1行


    如何获得此结果?

    这不是一个很好的解决方案,但它应该可以工作:您可以使用UNION ALL重复查询4次,并限制为4个结果:

    SELECT * FROM (
        SELECT field_name FROM tbl_name WHERE col_name = 'value' LIMIT 4;
        UNION ALL
        SELECT field_name FROM tbl_name WHERE col_name = 'value' LIMIT 4;
        UNION ALL
        SELECT field_name FROM tbl_name WHERE col_name = 'value' LIMIT 4;
        UNION ALL
        SELECT field_name FROM tbl_name WHERE col_name = 'value' LIMIT 4;
    ) a LIMIT 4
    
    像这样试试

    Select * from (
    
    select * from tbl_name WHERE col_name = 'value' LIMIT 4
    union all 
    select * from tbl_name WHERE col_name = 'value' LIMIT 4
    union all
    select * from tbl_name WHERE col_name = 'value' LIMIT 4
    union all
    select * from tbl_name WHERE col_name = 'value' LIMIT 4) as table1   LIMIT 4
    

    你的解释很不清楚,你能改进一下以便我们能提供帮助吗?问题出在哪里,请提供更多的细节或明确你想要的是什么,如果我说得对的话,一切都可以^^
    SELECT Column_Name
    FROM (
    SELECT Column_Name, ROW_NUMBER() OVER (ORDER BY Column_Name) AS RowNum
    FROM [dbo].[AttendanceLog]
    ) AS MyDerivedTable
     WHERE MyDerivedTable.RowNum BETWEEN 1 and 4