如何使用php从mysql数据库访问特定值?

如何使用php从mysql数据库访问特定值?,php,mysql,Php,Mysql,这是我的php脚本,它选择invoiceNo中的所有内容,其中invoiceNo是不同的 <?php require 'init.php'; $query = 'SELECT * FROM `selected_items` WHERE invoiceNo IN ( SELECT DISTINCT ( invoiceNo) AS invoiceNo FROM selected_items ) GROUP BY invoiceNo;'; $res = mysqli_query($con,

这是我的php脚本,它选择invoiceNo中的所有内容,其中invoiceNo是不同的

<?php

require 'init.php';
$query = 'SELECT * FROM  `selected_items` WHERE invoiceNo IN ( SELECT DISTINCT ( invoiceNo) AS invoiceNo FROM selected_items ) GROUP BY invoiceNo;';
$res = mysqli_query($con, $query);
$result = [];
while ($row = mysqli_fetch_array($res)) {
    array_push($result, [
        'custInfo'    => $row[0],
        'invoiceNo'   => $row[1],
        'barcode'     => $row[2],
        'description' => $row[3],
        'weight'      => $row[4],
        'rate'        => $row[5],
        'makingAmt'   => $row[6],
        'net_rate'    => $row[7],
        'itemTotal'   => $row[8],
        'vat'         => $row[9],
        'sum_total'   => $row[10],
        'bill_type'   => $row[11],
        'date'        => $row[12],
        'advance'     => $row[13],
        'balance'     => $row[14],
    ]);
}
echo json_encode(['result' => $result]);
mysqli_close($con);
现在,这个脚本给了我sum_total的第一个值,也就是说,它给了我数据库中的第一行如何才能得到最后一行。我是编程新手,非常感谢您的任何建议或帮助。谢谢:

尝试这样做:

$query ="SELECT * FROM  `selected_items` WHERE invoiceNo IN ( SELECT DISTINCT ( invoiceNo) AS invoiceNo FROM selected_items ) ORDER BY `sum_total` DESC";
$query ="SELECT max( `sum_total` ) FROM selected_items";

列名可以不同。

试试这个,我想这是你想要的,可能会有帮助吗

$query ="SELECT max( `sum_total` ) FROM `selected_items` GROUP BY invoiceNo;";

如果您只需要获取最后一条记录,请使用限制

$query ="SELECT * FROM  `selected_items` GROUP BY invoiceNo ORDER BY `sum_total` DESC limit 1;
如果您需要从最高到最低的总和记录,请尝试以下代码

$query ="SELECT * FROM `selected_items` where `sum_total` = (SELECT max( `sum_total` ) FROM `selected_items` GROUP BY invoiceNo) GROUP BY invoiceNo ORDER BY `sum_total` DESC;

这个查询解决了我的问题

为什么不使用排序描述?@AjayMakwana你能举个例子吗。谢谢:我想你是想从唯一发票中得到最大金额,对吗?您希望所有发票都包含该金额,还是仅按描述金额排序_total@rahul没错,你能帮忙吗!这给出了相同的结果,我仍然得到第一个row@AjayMakwana您的第二个查询将只提供一条记录您想要所有记录,并且第一条记录应具有最大总计?然后尝试删除分组依据。否则,您可以根据自己的要求对其进行修改,或者告诉我您到底想要什么,但也需要该行中的所有值。我不能只获取该特定发票的最后一行吗?谢谢:是的,确定只需在max'sum\u total'之后用逗号添加所选值,示例_字段来自…..是的,我尝试过,但它仍然得到第一行,我不知道为什么?在您的数据库中,没有唯一的字段来标识最后插入的记录,所有字段的值都相同,即使是日期,但总和除外,你能不能让你的日期不同,这样我们就可以在最后更新的日期时间之前获取记录。谢谢Arun,我尝试了两种解决方案。第一种解决方案仍然给我第一行。第二种解决方案给出了一个错误,说1064-你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,了解在第1行“DESC LIMIT 0,30”附近使用的正确语法,以便在第二次查询中为order by添加总和。现在编辑它。好啊我需要清楚地知道一件事,您希望所有记录都具有唯一的invoiceNo还是只包含最终记录?第二个错误为1242-子查询返回的行数超过1行,而不是在第一个查询中使用ORDER BY GREATESTsum\u total并通知我。我尝试了按invoiceNo ORDER BY Maximum sum\u total DESC limit 1从所选项目组中选择*;它给出了一个错误1582-在调用本机函数“magest”时参数计数不正确
Select * From (
SELECT t.*, 
       @rownum := @rownum + 1 AS rank
  FROM selected_items t, 
       (SELECT @rownum := 0) r order by rank DESC
) si GROUP BY si.invoiceNo;