这在理论上是相当容易的事情,但我还没有弄清楚如何做到这一点。我需要的是一种在MySQL数据库中查找名为“answers”的表中的最新时间戳/条目的方法。在找到这个之后,通过在所述提及'答案'条目之前发生的时间戳找到存储在名为'ip'的表中的所有IP。
有什么想法吗?我猜一个if()函数会是最好的方法吗?
编辑:表格结构,其中'ip'存在。
CREATE TABLE IF NOT EXISTS `votes` (
`id` int(250) NOT NULL AUTO_INCREMENT,
`ip` varchar(30) NOT NULL,
`answer_id` int(250) NOT NULL,
`poll_id` int(250) NOT NULL,
`timestamp` int(250) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
“回答”的表格
CREATE TABLE IF NOT EXISTS `answers` (
`id` int(250) NOT NULL AUTO_INCREMENT,
`poll_id` int(250) NOT NULL,
`answer` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
答案 0 :(得分:1)
当然,这可以是一个纯数据库解决方案,不需要在PHP中做任何事情吗?
假设这些表位于同一个数据库中,两者都有一个timestamp
列,分别命名为answers
和votes
,那么:
SELECT * FROM votes v
WHERE v.timestamp <= (SELECT max(a.timestamp) FROM answers a)
编辑:根据您的架构替换了名称,但我在timestamp
中没有看到answers
列?
答案 1 :(得分:0)
select * from ip x where x.timestamp <= (select max(y.timestamp) from answer y)
答案 2 :(得分:0)
要获取最新的时间戳,您可以使用...
SELECT timestamp_field FROM answers ORDER BY timestamp_field DESC LIMIT 1
然后运行与该查询的结果匹配的第二个查询。