从子查询列中过滤出结果

时间:2019-06-24 09:28:54

标签: mysql

我有一个查询,该查询将来自另一个查询的值附加为子选择。

我需要根据所附的列(customer_name)过滤结果(订单)。

SELECT
    id,
    (
    SELECT name
FROM
    customers
WHERE
    id = orders.customer_id
) AS `customer_name`
FROM
    orders
WHERE
    `customer_name` LIKE '%smith%'

出于某种原因,尽管有名为smith的客户,此查询未返回任何结果。

我不能使用join来加入name,此示例是我的查询的简化,我的原始查询要求“附加”多个值在同一张桌子上。

我得到Unknown column 'customer_name' in 'where clause'

复制:http://sqlfiddle.com/#!9/1f28834/2

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

在示例中,订单1,2,3

2 个答案:

答案 0 :(得分:1)

我已经解决了这个问题,方法是使用子查询按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%');

答案 1 :(得分:0)

在子查询中使用where条件


SELECT *, ( 
            SELECT name
            FROM customers
            WHERE id = orders.customer_id
          ) AS `customer_name`
FROM
    orders
WHERE 
   orders.customer_id IN ( 
                           SELECT id
                           FROM customers
                           WHERE customers.name like '%smith%'
                         )