Mysql 从子查询列中筛选出结果

Mysql 从子查询列中筛选出结果,mysql,Mysql,我有一个查询,它将来自不同查询的值附加为子选择 我需要根据随附的列customer_name筛选结果订单 选择 身份证件 选择名称 从…起 客户 哪里 id=订单。客户\u id 作为“客户名称”` 从…起 命令 哪里 `客户名称`如“%smith%” 出于某种原因,此查询不会返回任何结果,尽管有一个名为smith的客户 我不能使用join来连接名称,这个示例是对我的查询的简化,我的原始查询需要从同一个表中附加多个值 我在“where子句”中得到未知列“customer\u name” 复制:

我有一个查询,它将来自不同查询的值附加为子选择

我需要根据随附的列customer_name筛选结果订单

选择 身份证件 选择名称 从…起 客户 哪里 id=订单。客户\u id 作为“客户名称”` 从…起 命令 哪里 `客户名称`如“%smith%” 出于某种原因,此查询不会返回任何结果,尽管有一个名为smith的客户

我不能使用join来连接名称,这个示例是对我的查询的简化,我的原始查询需要从同一个表中附加多个值

我在“where子句”中得到未知列“customer\u name”

复制:

预期结果是属于名为smith的客户的所有订单


在示例中,订单1、2、3在子查询中使用where条件

选择*, 选择名称 来自客户 其中id=orders.customer\u id 作为“客户名称”` 从…起 命令 哪里 orders.customer\u id在中 选择id 来自客户 其中customers.name像“%smith%”
我绕了一圈,用子查询按id搜索

SELECT
    id,
    (SELECT name FROM customers WHERE id = orders.customer_id) AS `customer_name`
FROM
    orders
where 
    customer_id in (select id from customers where name like '%smith%');

有关提供示例数据和预期结果的信息,请参见。我的原始查询需要从同一个表中附加多个值。如果多条记录匹配,您的查询将失败。您是否收到任何错误。如果是什么?另外id=orders.customer\u id此行可能返回多行。使用限制1此行可能返回多行。使用limit 1@danish-khan-I简单地添加limit 1就是玩俄罗斯轮盘赌,因为ANSI/ISO SQL将SQL表/结果集定义为无序standards@danish-khan-I,这不是多行的问题。它不会返回属于名为smith的客户的订单,它只是不会添加客户的名称。@felixmosh:现在试试这个。它会返回所有订单,但这是我的方向,按客户id过滤,请看我的答案,它是正确的works@felixmosh:错误地更新了代码。我更新了我的代码now@NishalK.R,现在它抛出一个错误,因为select返回多行