用另一个表“条件”获取表

时间:2012-05-01 10:19:00

标签: postgresql select conditional-statements

我有两张这样的表:

表名:users

emx  |   userid
---------------
1    |   1
2    |   2

和另一个名为bodies

的表格
id   |   emx   |   text
--------------------------
1    |   1     |   Hello
2    |   2     |   How are you?

如您所见,body表的emxusers表的id号。现在,当我想要获取包含Hello的消息时,我只需在bodies上搜索并获取emx个数字,之后我会使用这些emx数字获取用户表。所以,我正在做2个SQL查询来找到它。

所以,我想做的就是在1个SQL查询中实现这一点。

我尝试了一些不正确的查询,我也试过JOIN。没有运气了。我只想获取用户表,其中包含在body表中包含'Hello'的消息。

注意:我使用的是PostgreSQL 9.1.3。

感谢任何想法/帮助。

2 个答案:

答案 0 :(得分:2)

  1. 阅读how to join tables上的文档。
  2. 试试这个:
  3.     SELECT u.emx, u.userid, b.id, b.text
          FROM bodies b
          JOIN users u USING (emx)
         WHERE b.text ~ 'Hello';
    

答案 1 :(得分:1)

这就是我加入的方式。我遗漏了确切的收容测试。

SELECT users.userid 
FROM users JOIN bodies ON (users.emx = bodies.emx) 
WHERE ⌜true if bodies.text contains ?⌟