在为公司开发系统时,我遇到了两难困境,而项目管理并非如此!
SELECT clients_owner.Name, clients_owner.`number`, clients_shops.Shopname, clients_shops.PostCode, clients_shops.Location
FROM clients_shops inner join clients_owner ON
clients_owner.ShopID = clients_shops.ShopID
UNION
SELECT clients_fans.Fan
FROM clients_shops inner join clients_fans ON
clients_shops.ShopID = clients_fans.ShopID
以下查询返回以下错误:
1222 - 使用的SELECT语句具有不同的列数
但是以此为例:Mysql JOIN (multiple) tables被标记为答案,因此查询显然是有效的。我哪里出错了?
以下连接合并两个表:
SELECT
clients_owner.Name, clients_owner.Number, clients_shops.Shopname, clients_shops.PostCode,
clients_shops.Location FROM clients_shops INNER JOIN clients_owner on
clients_owner.ShopID = clients_shops.ShopID
毫不费力地工作
答案 0 :(得分:2)
要使用UNION,您必须:
两个请求中的列数相同。
每个SELECT语句的相应位置的列应具有相同的数据类型。
第一个请求中有5列:
clients_owner.Name,
clients_owner.`number`,
clients_shops.Shopname,
clients_shops.PostCode,
clients_shops.Location
和第2个请求中的1列:
clients_fans.Fan
答案 1 :(得分:2)
联盟意味着您要在现有的列下添加相同的列。在您的情况下,第一个查询中有5列,第二个查询中有1列:
|1|2|3|4|5
|1|
不匹配。
您需要的是另一个加入:
SELECT clients_owner.name,
clients_owner.`number`,
clients_shops.shopname,
clients_shops.postcode,
clients_shops.location,
clients_fans.fan
FROM clients_shops
INNER JOIN clients_owner
ON clients_owner.shopid = clients_shops.shopid
LEFT JOIN clients_fans
ON clients_fans.shopid = clients_shops.shopid
答案 2 :(得分:1)
如果您使用UNION,则select语句中的列数应相等。
UNION中的每个SELECT语句必须具有相同的列数