如何select行基于数组postgresql中的数据

How to select row based on data in array postgresql

我正在尝试 select postgresql 中的一行 table 基于该行数组中的数据。 这是两个 table:

Table 1: 用户

users ---
username text
password text

Table 2:聊天

chats ---
room_id serial
users text[]
messages json[]

假设我有一个用户名为“Hello_world1”的用户,我想获取该用户的所有聊天记录。我会说“SELECT * FROM chats WHERE users contains “Hello_world2” 我试过“SELECT * FROM chats WHERE users[1] = “Hello_world2”,但是这不会长期有效,因为这意味着我将不得不创建另一个与这个相同的聊天,但在 users[1].

中使用另一个用户的名字

我找到了解决办法!

这里是查询:

SELECT * FROM chats WHERE "Hello_world1" = ANY (users)

翻译:

如果用户数组中的任何用户 =“Hello_world1”

,则从聊天中抓取每一行