에 의해 :채팅 - 선택 - GROUP을 나는 이러한 테이블이
테이블 이름 : _ 데이터
---------------------------
| id | owner | name |
---------------------------
| 1 | 120 | "Nicolas" |
| 2 | 140 | "Angel" |
---------------------------
테이블 이름 : private_messages
--------------------------------------------
| id | ownerID | toUserID | message |
--------------------------------------------
| 1 | 120 | 140 | "Hi" |
| 2 | 120 | 140 | "How are you?" |
| 3 | 120 | 140 | "I miss u" |
| 4 | 140 | 120 | "Viewed." |
--------------------------------------------
내가 선택해야을 예를 들어 사용자 ID가 "120"인 모든 행에 대해 사용자가 채팅을하면 모든 채널을 반환하는 쿼리를 만들어야합니다. ownerID 또는 toUserID에 "120"으로 표시되는 ats.
이 내 실제 쿼리입니다 :
----------------------------------------
| owner | name | message |
----------------------------------------
| 120 | "Nicolas" | "Hi" |
| 140 | "Angel" | "Viewed." |
----------------------------------------
그러나 당신이 생각하는 경우이 두 요소가 같은 채팅을하기 때문에, 이것은 잘못입니다 :
SELECT
user_data.owner,
ANY_VALUE(user_data.name) name,
ANY_VALUE(private_messages.message) message
FROM private_messages
INNER JOIN user_data ON private_messages.ownerID = user_data.owner
WHERE private_messages.owner = "120" OR private_messages.toUserID = "120"
GROUP BY user_data.owner
이 쿼리에 대한 결과입니다. 올바른 결과는 두 사용자 간의 마지막 메시지 여야합니다.
----------------------------------------
| owner | name | message |
----------------------------------------
| 140 | "Angel" | "Viewed." |
----------------------------------------
방법이 있습니까?
? 그러면 예상 결과가 단일 행입니까? 논리를 좀 더 자세히 설명해주십시오. –
이 테이블에는이 두 명의 사용자 만 있습니까? 아니면 다른 사용자 아이디가 있습니까? 어쩌면 좀 더 많은 정보가 도움이 될 것입니다 .... – Kevin
** 두 사용자 모두에게 속하는 메시지가 필요한 경우 왜 'WHERE' 절에'OR'을 사용합니까? 'private_messages.owner = "120"AND private_messages.owner = "140"'과 같은 것이 필요합니다. – abcdn