我有一个表与列名:如何从mysql中选择具有相同列名的多行中的一行?
id
message
sender
chat_id
我想从与同chat_id,在while循环读取的行数一行。
会是怎样的MySQL查询
我有一个表与列名:如何从mysql中选择具有相同列名的多行中的一行?
id
message
sender
chat_id
我想从与同chat_id,在while循环读取的行数一行。
会是怎样的MySQL查询
如果你只想要一个行,这些列的人都需要有独特的数据这样你就可以将其添加到WHERE子句
SELECT id,message,sender,chat_id from information WHERE id=2
例如。
SELECT id,message,sender,chat_id from information WHERE chat_id=5 AND sender='mark'
或while循环过程中,匹配任何你从它想要的列和抢。 但是,它必须是数据的唯一组合,否则它将被前面的覆盖。
while($row = $result->fetch_assoc()){
if($row['sender'] == 'mark' && $row['chat_id'] == '5'){
$thisIsMyRow = $row['id'];
}
请你能解释一下吗?你试图达到什么目标?
说这是你的查询:
您可能有匹配查询200行。为了只返回一个结果,你可以做一些事情。
如果你想要最新消息,你可以这样做:
SELECT id,message,sender,chat_id from messages WHERE chat_id=1 ORDER BY id DESC LIMIT 1
另一个例子,最新的5封邮件
SELECT id,message,sender,chat_id from messages WHERE chat_id=1 ORDER BY id DESC LIMIT 0,5
此外,当你把它回到PHP,而不是通过循环,你可以这样做:
$row = $result->fetch_assoc()
由于我们的查询只返回1行,所以不需要循环。您可以在查询返回多个结果时执行此操作 - 但最好优化查询。
我可以更好地建议您是否可以详细说明。
while($row = $result->fetch_assoc()){
$query = "SELECT id, message, sender,chat_id FROM messages WHERE Y = X AND Z = $K LIMIT 1";
}
更换WHERE
部分与要
请注意,没有ORDER BY的LIMIT是相当无意义的 - 并且以这种方式在循环内执行查询是不好的做法。 – Strawberry
@Strawberry为什么?它仍然会做限制的工作,不是吗? –
任何列目前尚不清楚你想要达到的目标。也许一个例子将有所帮助 –
请参阅[为什么我应该为我认为是非常简单的SQL查询提供一个MCVE](http://meta.stackoverflow.com/questions/333952/why-should-i-provide- an-mcve-for-what-looks-to-how-to-very-simple-sql-query) – Strawberry