mysql - 在另一行中显示 mySql LEFT OUTER JOIN 的结果

标签 mysql sql

mySql DB 中有两个具有多个字段的表 Customers 和 Children,通过一对多关系关联,因此一个客户可以有 0 到 n 个子级。

我必须将所有子客户提取到主客户行下的新行中。

这可能吗?

这是查询:

select customers.FIELDS...
from customers
LEFT OUTER JOIN asg_children 
ON customers.id = children.customer_id 
where customers.first_name != 'DEFAULT' and  customers.first_name != '' and 
customers.first_name != '_'
order by customers.last_name asc

最佳答案

您可以通过按列排序执行以下操作来创建此内容。点是放置列的位置,它们在每个查询中必须相同。这使得假设子级中的 customerid 必须存在于 customer 中。如果没有添加下面的 in 语句。请注意,您可以根据需要添加自己的名称过滤器,我已将它们遗漏了

Select *
From
(

  Select ID customerid ,.......,1 ordby From customer
  Union all
  Select customer_id,.......,2 from children /* optional in clause here */
 ) x
 Order by customerid,ordby

子句中的可选

Where customer_id in (select Id from customer)

关于mysql - 在另一行中显示 mySql LEFT OUTER JOIN 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393570/

相关文章:

MYSQL:在 SELECT 中对自己定义的参数执行 where

mysql - 当机器在 mysql 事务执行之间关闭时会发生什么?

php - 从插入行查询返回列条目 - MySQL 和 PHP

mysql - SQL:无法使用子查询中父查询的引用使用 datediff 或 date_add 来过滤行

javascript - 如何在编程语言之间共享数据

sql - 按状态获取每个位置的数量

sql - 优化使用多个 SELECT 语句并返回一个结果集的 SQL 查询

mysql - 使用所选列中的值更新多行

php - Laravel Eloquent 查询优化

sql - 如何列出 Informix 中的所有存储过程?