我有一个带有列名称的表:
Nullable<Tx>
我希望在while循环获取期间从具有相同chat_id的行数中获取一行。
什么是MySQL查询
答案 0 :(得分:0)
如果您只想要一行,则其中一列需要唯一数据,以便您可以将其添加到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'];
}
答案 1 :(得分:0)
请你解释一下吗?你想要实现的是什么?
说这是你的问题:
SELECT id,message,sender,chat_id from messages WHERE chat_id=1
您可能有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行,因此您无需循环访问。您可以在查询返回多个结果时执行此操作 - 但最好是优化查询。
如果你能详细说明,我可以提出更好的建议。
答案 2 :(得分:0)
while($row = $result->fetch_assoc()){
$query = "SELECT id, message, sender,chat_id FROM messages WHERE Y = X AND Z = $K LIMIT 1";
}
用您想要的任何列替换WHERE
部分