如何从外键等于查询结果的数据库中获取所有行?

时间:2016-04-24 20:58:08

标签: mysql database postgresql sequelize.js

所以我有一个“文章”表,其外键为“category_id”。

文章

| id | title | pub_date | category_id |
-----------------------------------
|  0 | abc   | 23423443 |    1        |
|  1 | def   | 23423423 |    2        |
|  2 | ghi   | 24234234 |    1        |
|  3 | jkl   | 23423424 |    3        |
|  4 | mop   | 23432435 |    2        |

分类

| id | title   |
----------------
|  1 | News    |
|  2 | Feature |
|  3 | Review  |

我有一个类别的标题。

我想在一个查询中确定所述类别的ID,并使用它来返回category_id = id和发布日期小于当前日期时间的文章。

这可能吗?

我正在使用Postgres,但我从学术角度看这个问题,所以任何SQL方言的答案都会很好,因为我很乐意为教育做自己的翻译。

3 个答案:

答案 0 :(得分:1)

select * 
    from Articles
  where pub_date <= now() and 
        category_id = (select id from Categories where title="TITLE")

答案 1 :(得分:1)

这是你之后的事吗?我不知道这是不是PostgresSQL。

select A.id, A.title, A.pub_date, C.id, C.title
from Articles A join Categories C on A.category_id=C.id
where C.title = MY_CATEGORY_TITLE and
a.pub_date < CURRENT_DATE_TIME

我忽略了对索引,订单等的需求。

答案 2 :(得分:0)

它只是一个简单的连接 尝试

SELECT A.id,A.title,A.pub_date,A.category_id,
       C.title
FROM Articles A
INNER JOIN Categories C
ON A.category_id = C.id
WHERE pub_date < NOW()
  AND C.title = "your title"