如何在 MySQL 中使用子查询中的字段?

Posted

技术标签:

【中文标题】如何在 MySQL 中使用子查询中的字段?【英文标题】:How to use field from subquery in MySQL? 【发布时间】:2018-11-27 13:39:46 【问题描述】:

我有以下查询:

SELECT insent.id, notifications.id
FROM insent
WHERE insent.id IN (
    SELECT insent_id
    FROM notifications
)
;

但这给出了一个错误提示:

“字段列表”中的未知列“notifications.id”

知道我该怎么做吗?

【问题讨论】:

【参考方案1】:

如果您想在一个查询中从几个表中获取数据,那么您应该使用JOIN 构造。例如:

SELECT 
    insent.id, 
    notifications.id 
FROM insent 
JOIN notifications ON notifications.insent_id = insent.id

如果你不想要它,你必须从字段列表中删除 notifications.id 字段

SELECT 
   insent.id
FROM insent
WHERE insent.id IN (
    SELECT insent_id FROM notifications
)

【讨论】:

【参考方案2】:

这里的问题是通知表不在范围内 试试这样

SELECT 
   i.id, 
   n.id 
FROM insent AS i
JOIN notifications AS n ON n.insent_id = insent.id

【讨论】:

以上是关于如何在 MySQL 中使用子查询中的字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 的子查询中指定父查询字段?

MySql 查询出对应子表的某个字段,并且关联起来

MySQL的子查询中FROM和EXISTS子句的使用教程

MySQL学习——SQL查询语句(连接查询&子查询)

mysql的分页使用子查询?

那个mysql 子查询和连接查询 一般常用哪个 谁效率高些