我一直试图让我的头脑走了一段时间,但我似乎无法弄清楚问题是什么。如果我知道问题所在,我会寻找解决方案,但我不明白为什么它会像这样。
所以无论如何,我有这张桌子:
CREATE TABLE `comments` (
`comment_id` bigint(20) NOT NULL AUTO_INCREMENT,
`comment_what_id` bigint(20) NOT NULL,
`comment_user_id` bigint(20) NOT NULL,
`comment_owner_id` bigint(20) NOT NULL,
`comment_extra` int(11) NOT NULL,
`comment_type` tinyint(3) NOT NULL,
`comment_text` text NOT NULL,
`comment_date` int(12) NOT NULL,
PRIMARY KEY (`comment_id`),
KEY `comments_user_id` (`comment_user_id`),
KEY `comment_type` (`comment_type`),
KEY `comment_what_id` (`comment_what_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是我的行:
INSERT INTO `comments` (`comment_id`, `comment_what_id`, `comment_user_id`, `comment_owner_id`, `comment_extra`, `comment_type`, `comment_text`, `comment_date`) VALUES
(109, 21, 1, 1, 10, 1, 'first', 1363915838),
(110, 21, 1, 1, 10, 1, 'second\n', 1363915847),
(114, 21, 1, 1, 10, 1, 'third\n', 1363915891),
(115, 21, 1, 1, 10, 1, 'fourth\n', 1363915896),
(117, 21, 1, 1, 10, 1, 'last', 1363915911),
(154, 53, 10, 1, 10, 1, 'Hello! :D\n', 1363968585)
现在,当我尝试按n
(comment_what_id
和53
获取第一个21
行时,MySQL有时会断开连接,有时会得到0
所有返回行中的值和comment_text
列在每一行中都是完全空的
这似乎只发生在Linux操作系统中,当我尝试获取行53和21.如果重要的话,我正在使用Linux Mint btw。当我试图获得其他价值时,似乎工作得非常好。我不知道这两个值是怎么回事。
所以,这是我的问题:
set @num := 0, @type := '';
SELECT * FROM (
SELECT
comment_id,
comment_what_id,
comment_owner_id,
comment_extra,
comment_text,
comment_date,
@num := if(@type = `comment_what_id`, @num + 1, 1) as `row_number`,
@type := `comment_what_id` as dummy
FROM `comments`
WHERE `comments`.comment_what_id IN (53,21) AND comment_type = 1
ORDER BY comment_what_id, comment_date DESC
) `all` WHERE row_number <= 4;
如果我遗失了什么,请告诉我,因为这让我发疯了。