如何在mysql中从多个具有相同列名的行中选择一行?

时间:2017-06-29 18:05:11

标签: php mysql

我有一个带有列名称的表:

Nullable<Tx>

我希望在while循环获取期间从具有相同chat_id的行数中获取一行。

什么是MySQL查询

3 个答案:

答案 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部分