[英]MySQL selecting “previous” max(id) WHERE
我有一個表格,可在孩子登上夏令營區域時插入數據。 如果孩子小於12歲,則必須掃描父母條形碼,以允許孩子進入未成年孩子區域(小於12歲)。
該表包含以下列。
kcID
uID
id
age
room
barcode
date
amber
數據通常會這樣顯示。
kcID uID id age room barcode date amber
25 1 1 30 1000 0001 6/26/2014 1:27:40 AM 0
26 6 1 1 1000 0005 6/26/2014 1:27:40 AM 0
我的問題是我需要比較日期/時間,以了解孩子是否正在進入或離開營地,並通過php向父母發送短信,以便他們知道自己的孩子不在特定區域內。
我知道我可以檢索max(kcID)WHERE條碼= XXXX,它將返回最后插入的行,但是,為了讓我檢索到該信息,必須對孩子進行掃描,正確插入新行並渲染max(kcID)在這種情況下沒有用。
我需要的是能夠選擇max(kcID)WHERE條碼= xxxx,然后選擇找到條碼= xxxx的上一行記錄。 這樣,我可以比較日期並知道孩子是要離開還是進入那個特定區域。
我現在想到的最簡單的解決方案是擁有2張桌子(其中1張用於進出1張),並讓營地輔導員選擇孩子是進出還是離開,但我想知道我是否只能使用1張桌子。
添加狀態為左並返回的列
ALTER TABLE `table` ADD `status` enum('left', 'returned') NOT NULL DEFAULT 'left';
現在您可以通過以下查詢選擇倒數第二行
select `kcID`, `barcode` from `table` where `status` = 'left' ORDER BY `barcode` DESC LIMIT 1,1
您可以添加一個指示離開/返回的列,並將其添加到您的條件中。
例如
ALTER TABLE `table`
ADD `status` enum('left', 'returned') NOT NULL DEFAULT 'left';
一個查詢將是
SELECT `kcID`, `barcode`
FROM `table`
WHERE `status` = 'left'
ORDER BY `timefield` DESC
LIMIT 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.