답변 2개
아래의 코드를 한번 참고를 해보시겠어요..
// 1. 삭제된 wr_id 목록 구하기 $sql_missing = " SELECT wr_id + 1 AS missing_id FROM g5_write_free WHERE (wr_id + 1) NOT IN (SELECT wr_id FROM g5_write_free) AND wr_id + 1 <= (SELECT MAX(wr_id) FROM g5_write_free) ORDER BY wr_id "; $result_missing = sql_query($sql_missing); $missing_ids = array(); while ($row = sql_fetch_array($result_missing)) { $missing_ids[] = $row['missing_id']; } echo "삭제된 wr_id 목록: " . implode(', ', $missing_ids) . " ";
// 2. 마지막 wr_id 구하기 $sql_last = "SELECT MAX(wr_id) AS last_wr_id FROM g5_write_free"; $row_last = sql_fetch($sql_last); echo "마지막 wr_id: " . $row_last['last_wr_id']; ?>
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p><?php</p>
<p>include $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'common.php';</p>
<p> </p>
<p>$deleted_ids = []; </p>
<p> </p>
<p>$tbl = 'g5_write_free';</p>
<p> </p>
<p>$sql = "
SELECT wr_id - gap + 1 id_start, wr_id - gap + gap - 1 id_end FROM
(
SELECT @v, a.wr_id, a.wr_id - @v gap, @v := a.wr_id
FROM {$tbl} a INNER JOIN (SELECT @v := 0 FROM DUAL) tmp
ORDER BY a.wr_id
) tmp
WHERE gap > 1
";
$result = sql_query($sql);</p>
<p> </p>
<p>while ($row = sql_fetch_array($result)) {
$deleted_ids = array_merge($deleted_ids, range($row['id_start'], $row['id_end']));
}</p>
<p> </p>
<p>// deleted collection
print_r($deleted_ids);</p>
<p> </p>
<p>// last ID of deleted collection</p>
<p>if (count($deleted_ids) > 0) {
echo $deleted_ids[count($deleted_ids) - 1];</p>
<p>}</p>
<p> </p>
<p>// last ID of rows
$row = sql_fetch("SELECT wr_id FROM {$tbl} ORDER BY wr_id DESC LIMIT 1");</p>
<p>if (isset($row['wr_id']) == true) {
echo $row['wr_id'];</p>
<p>}</p>
<p>?></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인