【问题标题】:MySQL and PHP select different rowMySQL和PHP选择不同的行
【发布时间】:2020-10-14 22:24:12
【问题描述】:

我有这张桌子

配置

ID   Location   Position   CheckData    UpdateDT
1    House1      Floor1     20        2020-06-24 18:12:20
2    House1      Floor1     30        2020-06-24 13:54:16
3    House1      Floor2     45        2020-06-24 10:06:34  
4    House2      Roof1      70        2020-05-12 13:27:43
5    House1      Floor1     35        2020-05-12 12:20:12

我喜欢创建一个select,以便从配置表中仅获取每个“家”和“位置”的最新更新值,例如

1    House1    Floor1     20        2020-06-24 18:12:20
3    House1    Floor2     45        2020-06-24 10:06:34
4    House2    Roof1      70        2020-05-12 13:27:43

我试过这个,但它不起作用,因为我不知道如何在上面添加位置

select * from Configuration where Location = 'house 1' order by Configuration.UpdateDT desc limit 1

这是我目前拥有的 php 代码

$sqlsyntax = "SELECT * FROM `DevicesLocations`";
$resultfromsql = mysqli_query($connectionstring, $sqlsyntax);
while( $row = mysqli_fetch_array($resultfromsql) )
{
   echo $row['Location'] . " " . $row['Comments'];
   echo "<br />";
   $sql2 = "SELECT * from Configuration where location='";
   $sql2 = $sql2.$row['Location']."' order by UpdateDT desc limit 1";
   echo $sql2."<br>";
   $result2 = mysqli_query($connectionstring, $sql2);
   while( $row2 = mysqli_fetch_array($result2) )
   {
      echo "..........".$row2['SensorPosition'] . " " . $row2['CheckData'] ;
      echo "<br />";
   }
   echo "------------------------------<br>";
}

输出

House1    first home
...... floor1 20
House2     second home
...... Roof1 70

期望的输出

House1    first home
...... floor1 20
...... floor2 45
House2     second home
...... Roof1 70

如果我使用以下select,我如何才能包含最新日期?

SELECT * FROM `Configuration` group BY Configuration.SensorPosition

【问题讨论】:

  • 你可以像select * from Configuration WHERE Location = "House1" order by Configuration.UpdateDT desc limit 1一样使用WHERE
  • 我添加了到目前为止的代码。我想要一个列表,以便用户可以根据他拥有的最新更新选择他想要查看数据的位置。第二个房子呢?
  • row2 的结果是什么?
  • 非常感谢!!!!好的想法是用户不能输入任何数据!设备移动时自动存储的数据。
  • 这并没有改变它仍然易受攻击的事实。 SQL 注入是代码中的一个错误,数据来自哪里并不重要。

标签: php mysql select mysqli


【解决方案1】:

我想我已经找到了答案。所以,如果我错了,请纠正我

SELECT m.* from Configuration m 
   left join Configuration b on 
     m.SensorPosition = b.SensorPosition and 
     m.UpdateDT < b.UpdateDT where b.UpdateDT is null 

I follow this link to get the answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-06
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多