Php 在mysql中,如何从多个具有相同列名的行中选择一行?
我有一个列名称为的表:Php 在mysql中,如何从多个具有相同列名的行中选择一行?,php,mysql,Php,Mysql,我有一个列名称为的表: id message sender chat_id 我想在while循环获取期间,从具有相同聊天id的行数中获取一行 MySQL查询将是什么如果您只需要一行,那么其中一列需要有唯一数据,这样您就可以将其添加到WHERE子句中 例如,从id=2的信息中选择id、message、sender、chat\u id 从chat\u id=5和sender='mark'的信息中选择id、message、sender、chat\u id 或者在while循环中,匹配列并从中获取您想
id
message
sender
chat_id
我想在while循环获取期间,从具有相同聊天id的行数中获取一行
MySQL查询将是什么如果您只需要一行,那么其中一列需要有唯一数据,这样您就可以将其添加到WHERE子句中
例如,从id=2的信息中选择id、message、sender、chat\u id
从chat\u id=5和sender='mark'的信息中选择id、message、sender、chat\u id
或者在while循环中,匹配列并从中获取您想要的内容。
但同样,它需要是一个独特的数据组合,否则会被前一个数据覆盖
while($row = $result->fetch_assoc()){
if($row['sender'] == 'mark' && $row['chat_id'] == '5'){
$thisIsMyRow = $row['id'];
}
请你再解释一下好吗?你想达到什么目的
假设这是您的查询:
从chat\u id=1的消息中选择id、message、sender、chat\u id
您可能有200行与该查询匹配。为了只返回一个结果,您可以做几件事
如果您想要最新的消息,可以执行以下操作:
从chat\u id=1的消息中选择id、消息、发件人、聊天室id,按id顺序描述限制1
另一个示例,最新5条消息
从chat_id=1的消息中选择id、消息、发件人、chat_id,按id顺序描述限制0,5
此外,当您将其返回到PHP中时,您可以执行以下操作,而不是通过循环:
$row=$result->fetch\u 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是毫无意义的——以这种方式在循环中执行查询是一种糟糕的做法,为什么?它仍然会起到限制的作用,不是吗?