繁体   English   中英

子查询在select语句中返回超过1行的mysql

[英]Subquery returns more than 1 row mysql in select statement

我正在执行以下查询以从不同的表中获取各种详细信息

SELECT d.*,
(SELECT printers from tbl_client_contract c where c.client_id=d.id) as printers, 
(SELECT systems from tbl_client_contract c where c.client_id=d.id) as systems, 
(SELECT sales_date from tbl_client_contract c where c.client_id=d.id) as sales_date, 
(SELECT others from tbl_client_contract c where c.client_id=d.id) as others, 
(SELECT dispatch_to from dispatch c where c.client_id=d.id) as dispatch_to 
FROM `tbl_clients` d where status='1' and hide=0

但是正在显示子查询返回超过 1 行

任何人都可以帮助我在我做错的地方吗?

您可能会重写此查询以使用JOIN而不是您正在使用的嵌入式SELECT语句:

SELECT  d.*,
        c.printers,
        c.systems,
        c.sales_date,
        c.others,
        di.dispatch_to
  FROM  `tbl_clients` d
    LEFT JOIN tbl_client_contract c ON c.client_id = d.id
    LEFT JOIN dispatch di ON di.client_id = d.id
  WHERE d.status = '1' AND d.hide = 0

尽管从逻辑上讲,从tbl_client_contract进行选择可能更有意义:

SELECT  cc.printers,
        cc.systems,
        cc.sales_date,
        cc.others,
        di.dispatch_to,
        c.*
  FROM  tbl_client_contract cc
    INNER JOIN `tbl_clients` c ON c. = cc.id
    LEFT JOIN dispatch di ON di.client_id = c.id
  WHERE d.status = '1' AND d.hide = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM