如何使用php和mysql按列用户名检查最后一行ref?

时间:2015-09-30 17:03:43

标签: php mysql

如何使用php和mysql按列用户名检查最后一行ref?

这是我的表

 _________________________________
|_id_|_____username_____|___val___|
|  1 |      AAAA        |    3    |
|  2 |      AAAA        |    4    |
|  3 |      AAAA        |    5    |
|  4 |      CCCC        |    1    |
|  5 |      CCCC        |    3    |
|  6 |      CCCC        |    4    |
|  7 |      CCCC        |    7    |
|  8 |      DDDD        |    2    |
|  9 |      DDDD        |    4    |

这是我的代码。

<?php
include("connect.php");
$strSQL = "SELECT * FROM table order by id asc ";
$objQuery = mysql_query($strSQL);
while($objResult = mysql_fetch_array($objQuery))
{
    echo ["val"];
    echo "<BR>";
}
?>

当我测试代码时。我会回应

3
4
5
1
3
4
7
2
4

但我想在最后一行回复用户名。

3
4
5 AAAAA
1
3
4
7 CCCCC
2
4 DDDDD

我该怎么做?谢谢。

4 个答案:

答案 0 :(得分:1)

试试这个:

SELECT t1.val,t2.username FROM `test` as t1
left join (SELECT max(id) as id,username FROM `test` group by username) as t2 on t1.id=t2.id

答案 1 :(得分:0)

使用PHP的简单答案。

<?php
include("connect.php");
$strSQL = "SELECT * FROM table order by id asc ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery)

 foreach($objResult as $key => $value){

    echo $value["val"];

    if($value["username"] != $objResult[$key+1]["username"]){

      echo $value["username"];

     }
?>

我写的例子。

<?php

    $arr = array(
        array(
            3,
            'AAAA'
        ),
        array(
            4,
            'AAAA'
        ),
        array(
            5,
            'AAAA'
        ),
        array(),
        array(),
        array(),
        array()
    );

     foreach($arr as $key => $value){

        echo $value[0];

        if($value[1] != $arr[$key+1][1]){

          echo $value[1];

         }
        echo "\n";

    }

    ?>

DEMO

答案 2 :(得分:0)

如果您愿意使用php,那么您可以尝试这样:

<?php 

include("connect.php");
$strSQL = "SELECT GROUP_CONCAT(val) as vals,username FROM table GROUP BY username order by id asc ";
$objQuery = mysql_query($strSQL);
while($objResult = mysql_fetch_array($objQuery))
{
    $vals=explode(",",$objResult['vals']);
    for($i=0;$i<sizeof($vals);$i++){
        if($i == sizeof($vals)-1){
        echo $vals[$i]." ".$objResult['vals']."<br>";
        }else{
            echo $vals[$i]."<br>";
        }
    }
}

答案 3 :(得分:0)

  

您可以在查询结束

中获取解决方案
<?php
          include("connect.php");
        $qobject = mysql_query("SELECT u3.id,u4.username,u4.val FROM `user` as u3 left join (SELECT u1.*
                        FROM user u1 LEFT JOIN user u2
                        ON (u1.username = u2.username AND u1.id < u2.id)
                        WHERE u2.id IS NULL
                        ) as u4 on u4.id=u3.id");
        while($data = mysql_fetch_array($qobject)){
            echo $data['id'].$data['username'];
        }
?>
  

查询耗时0.0009秒