簡體   English   中英

使用php在sql中找到最新條目的列

[英]Find the column with the newest entry in sql using php

使用 php 代碼,如果我對 id 2 感興趣,我想知道最新條目位於哪一列。然后時間為“2016-03-01 10:01:01”的“time4”列是最新的入口。

id      time1                   time2                   time3                   time4
1       2016-01-01 09:27:24     2016-01-02 10:01:01     2016-01-02 17:05:07     2016-01-01 10:01:01
2       2016-01-02 09:27:24     2016-01-03 10:01:01     2016-02-02 17:05:07     2016-03-01 10:01:01
3       2016-01-02 10:27:24     2016-01-03 11:01:01     2016-02-02 18:05:07     2016-03-01 11:01:01

我試過這個

<?php
$User=1;
$result = $con->query("SELECT MAX(TimeToSelect) as Output
FROM (
    SELECT time1 as TimeToSelect,id
    FROM tableTime
    union
    SELECT time2,id
    FROM tableTime
    union
    SELECT time3,id
    FROM tableTime
        union
    SELECT time4,id
    FROM tableTime
    ) as A
  WHERE id = '$User'");
$row = $result->fetch_array(MYSQLI_BOTH);

echo $something=$row[0];
?>

但隨后它與日期“2016-03-01 10:01:01”相呼應,而不是列名“time4”。

如果你只包含 4 列進行比較,你可以使用下面的 SQL 來獲得你想要的。
您可以在 where 條件中更改 id 以獲取為特定“id”輸入的最新時間。 (每次每個id)

SELECT MAX(TimeToSelect) as Output
FROM (
    SELECT time1 as TimeToSelect,id
    FROM tableTime
    union
    SELECT time2,id
    FROM tableTime
    union
    SELECT time3,id
    FROM tableTime
    union
    SELECT time4,id
    FROM tableTime
    ) as A
  WHERE id = 1

如果要獲取列名,請嘗試以下 SQL:

SELECT ColumnName
FROM (
    SELECT time1 AS TimeToSelect,id,'time1' AS ColumnName
    FROM tableTime
    UNION
    SELECT time2,id,'time2'
    FROM tableTime
    UNION
    SELECT time3,id,'time3'
    FROM tableTime
    UNION
    SELECT time4,id,'time4' 
    FROM tableTime
    ) AS A 
WHERE id = 1 
AND TimeToSelect = (SELECT MAX(TimeToSelect)
                    FROM (
                         SELECT time1 AS TimeToSelect,id,'time1' AS ColumnName
                         FROM tableTime
                         UNION
                         SELECT time2,id,'time2'
                         FROM tableTime
                         UNION
                         SELECT time3,id,'time3'
                         FROM tableTime
                         UNION
                         SELECT time4,id,'time4' 
                         FROM tableTime
                         ) AS A
                    WHERE id = 1
                    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM