我目前正在处理一个查询,该查询将包含一个表中的所有行,但只有来自另一个表的有限信息。
我尝试使用此查询:
SELECT `t`.`uid`, `t`.`cid`, `t`.`id` FROM `tracking` as `t`
JOIN (SELECT DISTINCT(`p`.`id`, `p`.`firstname`, `p`.`lastname`, `p`.`company`) FROM `publishers` as `p`) as `p`
ON `p`.id = `t`.uid
但是,我收到主题标题中的错误。
谁能看到我在这里做错了什么?
编辑:
跟踪结构: id int(11) primary ai, cid int(11), uid int(11)。
出版商结构: id int(11) primary ai, firstname varcher(60), 姓氏 varchar(60), company varchar(100)。
样本:发行人id 1,名字尼古拉,姓杰普森,公司 APECHOID 6,名字罗伯特,姓斯科特,公司FLAPJACK LTD
跟踪ID 1, CID 1, UID 1;ID 2、CID 1、UID 6;ID 3、CID 3、UID 1
没有两个发布者可以共享相同的ID,名字,姓氏和公司!!
SELECT t.uid
, t.cid
, t.id
FROM tracking t
JOIN publishers p
ON p.id = t.uid;
DISTINCT( p
.id
, p
.firstname
, p
.lastname
,p
。company
)
是问题所在。 去掉括号:
SELECT `t`.`uid`, `t`.`cid`, `t`.`id` FROM `tracking` as `t`
JOIN (SELECT DISTINCT `p`.`id`, `p`.`firstname`, `p`.`lastname`, `p`.`company` FROM `publishers` as `p`) as `p`
ON `p`.id = `t`.uid
这应该允许查询工作...但是,如果必须为此使用 Distinct ,则数据结构或查询可能存在其他问题。