我正在尝试从下表中查询 sql。我已经尝试了很多方法来完成这项工作。但对于我来说,找到解决方案似乎太复杂了。
user_id="200"; // 假设用户 ID 现在是 200。
tb_conversation
-------------------------------------------------------------------------------------
c_id | user_one_id | user_two_id | user_one_delmsg | user_two_delmsg
-------------------------------------------------------------------------------------
001 | 200 | 198 | Y | N
------------------------------------------------------------------------------------
002 | 195 | 200 | Y | N
------------------------------------------------------------------------------------
003 | 200 | 193 | N | N
------------------------------------------------------------------------------------
我要做的是查询与上面的user_id匹配的唯一一个表。它可以是表中的 user_one 或 user_two。如果 user_id 在表中是 user_one,那么 user_one_delmsg 不能是“Y”。或者如果 user_id 是表中的 user_two,那么 user_two_delmsg 不能是“Y”
我尝试过的:
$q= "SELECT * from conversation ORDER BY c_id DESC ";
$_stmt = $conn->prepare($q);
$_stmt->execute();
$row=$_stmt->fetchAll();
foreach ($row as $r) {
if ($user_id==$r['user_one_id']){
if ( $r['user_one_delmsg']!="Y") {
//do something
}
}
if ($user_id==$r['user_two_id']){
if ( $r['user_two_delmsg']!="Y") {
//do something
}
}
我得到的是: 与查询匹配的结果数组。 但我想要的只是一个结果,即最大 c_id 和 user_ x _delmsg 不能是“Y”
我也只使用了 fetch(); 我没有得到我想要的。我也将限制 1 放在查询的最后一个,但它没有帮助。