Mysql 如何从外键等于查询结果的数据库中获取所有行?
所以我有一个“Articles”表,它的外键是“category_id” 文章Mysql 如何从外键等于查询结果的数据库中获取所有行?,mysql,database,postgresql,sequelize.js,Mysql,Database,Postgresql,Sequelize.js,所以我有一个“Articles”表,它的外键是“category_id” 文章 | id | title | pub_date | category_id | ----------------------------------- | 0 | abc | 23423443 | 1 | | 1 | def | 23423423 | 2 | | 2 | ghi | 24234234 | 1 | | 3 | jkl |
| 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,并使用它返回类别id=id和发布日期小于当前日期时间的文章
这可能吗
我使用的是博士后,但我是从学术角度来看这一点的,所以任何SQL方言的答案都可以,因为我很高兴自己为教育做翻译 选择*
select *
from Articles
where pub_date <= now() and
category_id = (select id from Categories where title="TITLE")
从文章
其中发布日期选择*
从文章
这里的pub_date只是一个简单的连接
试一试
选择A.id、A.title、A.pub\u date、A.category\u id、,
C.头衔
从A条
内连接类别C
关于A.category_id=C.id
其中pub_date
这只是一个简单的连接
试一试
选择A.id、A.title、A.pub\u date、A.category\u id、,
C.头衔
从A条
内连接类别C
关于A.category_id=C.id
其中pub_date
这就是你想要的东西吗?我不知道这是不是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
选择A.id、A.title、A.pub\u日期、C.id、C.title
从文章A在A.category_id=C.id上连接类别C
其中C.title=我的类别和
a、 发布日期<当前日期\时间
我忽略了对索引、订单等的需求。这就是你想要的东西吗?我不知道这是不是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
选择A.id、A.title、A.pub\u日期、C.id、C.title
从文章A在A.category_id=C.id上连接类别C
其中C.title=我的类别和
a、 发布日期<当前日期\时间
我忽略了对索引、订单等的需求。这非常有效,Tin Tran刚刚第一个到达那里。谢谢,没问题。如果您还没有,那么关于不同类型的联接(内部联接、外部联接、左侧联接和右侧联接)可能值得一读。我很草率,没有指定(假设默认为内部)。Tin Tran也使用了Internal,我想这是你在这里需要的,但是了解其他种类也很有用。我以前也研究过它们,但现在我可以看到我有很多东西要学。只是想办法解决所有可能的连接变体的问题本身就有点像大脑游戏。也许值得我克隆我的DB并和其中一些人一起玩一玩。再次感谢。这非常有效,Tin Tran刚刚第一个到达那里。谢谢,没问题。如果您还没有,那么关于不同类型的联接(内部联接、外部联接、左侧联接和右侧联接)可能值得一读。我很草率,没有指定(假设默认为内部)。Tin Tran也使用了Internal,我想这是你在这里需要的,但是了解其他种类也很有用。我以前也研究过它们,但现在我可以看到我有很多东西要学。只是想办法解决所有可能的连接变体的问题本身就有点像大脑游戏。也许值得我克隆我的DB并和其中一些人一起玩一玩。再次感谢。这帮了我很大的忙,我最终选择了加入路线而不是子查询,但是谢谢你的回答。好的。我认为@BobSalmon answer在连接变量中更好,因为where子句title=CATEGORY title
可以减少临时表,因此执行时间无论子查询(如本答案中所示)还是连接更好,答案都是:它取决于()。这个答案有点陈旧,但我认为仍然相关。知道如何做到两者都是值得的,这样你就可以在你的情况下使用最有效的方法(可能会有所不同)。@BobSalmoni我不会比较你和我的答案。我用join写了两个答案:)这很有帮助,我最终选择了join路线而不是子查询,但谢谢你的回答。好的。我认为@BobSalmon answer在连接变量中更好,因为where子句title=CATEGORY title
可以减少临时表,因此执行时间无论子查询(如本答案中所示)还是连接更好,答案都是:它取决于()。这个答案有点陈旧,但我认为仍然相关。知道如何做到两者都是值得的,这样你就可以在你的情况下使用最有效的方法(可能会有所不同)。@BobSalmoni我不会比较你和我的答案。我用join写了两个答案:)我为特定类别标题添加了额外的WHERE子句,但这帮助我得到了我需要的答案谢谢。在那里,我更新了我的查询以显示您正在寻找特定类别标题的事实。我想我没有听到你在问题中提到这一点。但是yeahI为特定类别标题添加了额外的WHERE子句,但这帮助我得到了我需要的答案谢谢。在那里,我更新了我的查询,以显示您正在寻找特定类别标题的事实。我想我没有听到你在问题中提到这一点。但是是的