[英]Fetching specific data from MySQL table
我有一個數據庫表,看起來像這樣:(從PHPMyAdmin導出)
CREATE TABLE IF NOT EXISTS `topics` (
`parent` smallint(6) NOT NULL,
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
`title` varchar(256) NOT NULL,
`message` longtext NOT NULL,
`authorid` int(11) NOT NULL,
`timestamp` int(11) NOT NULL,
`timestamp2` int(11) NOT NULL,
PRIMARY KEY (`id`,`id2`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
基本上,這是保存我的論壇系統主題的表。
因此,我無法創建可以包含在其他頁面上的最新帖子頁面。 我要獲取的是發布的原始最新主題。
說起來容易些:
請注意:ID並非自動遞增,因為發布主題時,我使用PHP手動將其設置為即將到來的數字。 又說我不認為LAST_INSERT_ID()將起作用。
到目前為止,我執行此操作的代碼已發布在Pastebin上:
應該這樣做:
SELECT
*
FROM
topics
WHERE
id IN ((SELECT id from topics order by id desc limit 1)) /* set a higher limit if you want to pull more recent posts */
ORDER BY
id desc,
id2 asc
用英語將SQL轉換為:
從主題表中獲取所有內容
ID在此查詢時可用的最高編號
按ID升序排列,然后按ID2降序排列
我認為您只需要這樣:
SELECT * FROM topics
ORDER BY id DESC, id2 ASC
LIMIT 1
在旁注中,如果您將發布時間和編輯時間字段分別命名為post_time
和edited_time
,而不是timestamp
和timestamp2
,那么我認為您會更加高興。 id
和id2
我不太了解,您的要求:P
但是,但是我能理解的是,您希望主題顯示發布或修改的最新主題。
SELECT * FROM topic ORDER BY ID id timestamp2 DESC。
如果正在填寫,即使創建主題,此查詢也可以使用時間戳2。
第二解決方案
> SELECT * FROM topics ORDER BY id timestamp DESC. in array t1
SELECT * FROM topics ORDER BY id timestamp2 DESC. in array t2
Then merge t1 and t2 in descending order by comparing timestamp field of t1 and timestamp2 field of t2.
然后以降序循環在第三個數組上...
希望這行得通。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.