[英]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.