我正在处理SQL和我的SQL不如我的红宝石,所以我希望你能帮助我。帮助一个可能嵌套的SQL查询
我有大的表看起来像这样:
messages:
id INTEGER PRIMARY KEY AUTO_INCREMENT
to VARCHAR(255)
text text
shown DATETIME
现在我的脚本生成这部分取决于在线玩家人数。
"to = 'STEAM_0:0:xxx' OR to = 'STEAM_0:0:xxy' OR to = 'STEAM_0:0:xxz'"
这是一个活跃球员的倾听,我想检查他们有一些未读消息的天气。现在,以该字符串我可以做和sprintf的这个:
SELECT * FROM messages WHERE shown IS NULL AND (%s)"
,并得到一个不错的格式化字符串:
SELECT * FROM messages WHERE shown IS NULL AND (to = 'STEAM_0:0:xxx' OR to = 'STEAM_0:0:xxy' OR to = 'STEAM_0:0:xxz')
现在我只有两个问题:
- 的SQL回报每个字段条目多于1个条目
to
,我想每to
(限制1由to
?)返回恰好一条消息,并且它必须是最新的(首先是id) 。
为了使这更清晰,让我们假设我有一个这样的表:
id, to, text
1, "x", "text1"
2, "x", "text2"
3, "y", "text3"
4, "z", "text4"
5, "y", "text5"
6, "z", "text6"
7, "y", "text7"
我希望得到以下几点:
1, "x", "text1"
3, "y", "text3"
4, "z", "text4"
- 我想更新的领域
shown
与NOW()对检索的条目进行同样的SQL调用。
where uniqueid is in the table? – Dani 2010-10-31 05:21:17
'to'对于列来说是一个非常糟糕的名字。它是MYSQL中的一个保留字,因此每次引用时都需要使用表前缀进行转义或标识。很可能你或其他人偶尔会忘记这样做,然后它会激怒你。也许像收件人一样会是更好的选择?在这里看到更多的细节:http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html – 2010-10-31 07:09:57
转义与'to',我不在乎,我想要一个真正的解决方案,而不是一些关于公约的唠叨。 – 2010-10-31 07:26:03