Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:具有in子句整数的左外联接_Mysql_String_Int_Comma - Fatal编程技术网

MySQL:具有in子句整数的左外联接

MySQL:具有in子句整数的左外联接,mysql,string,int,comma,Mysql,String,Int,Comma,表A: 此表中的每条记录维护给定用户的附件列表 表B: 此表中的每条记录表示给定用户的单个附加文档。 我正在尝试获取给定用户的所有表B记录以及表a记录的列表。 其中,Table-A supportingDocIds varchar列使用需要匹配的逗号分隔来维护Table-B的主键idAttachedDocs(INT)列表。因此,我希望/可以读取对应表A列中的匹配记录 我在下面试过,但没有成功 select a.*,w.month from attacheddocs a left join w

表A:
此表中的每条记录维护给定用户的附件列表

表B:
此表中的每条记录表示给定用户的单个附加文档。

我正在尝试获取给定用户的所有表B记录以及表a记录的列表。 其中,Table-A supportingDocIds varchar列使用需要匹配的逗号分隔来维护Table-B的主键idAttachedDocs(INT)列表。因此,我希望/可以读取对应表A列中的匹配记录

我在下面试过,但没有成功

select a.*,w.month from attacheddocs a left join weeklyhrssummary w on a.idattacheddocs in (REPLACE(w.supportingDocIds, '\'', '')) where a.userId=w.userid and a.userId=138 ;
任何解决方案都将不胜感激。谢谢

/Gopi

www.AlliBilli.com

WHERE子句中的a.userId=w.userId
使其成为隐式内部联接
a.idattacheddocs IN(REPLACE(w.supportingDocIds,'\'',)
相当于
a.idattacheddocs=(REPLACE(w.supportingDocIds,'\'',)
,因为IN操作符的工作方式与您想象的不同。。它认为
'1,2,3'
是一个项目,而不是一组项目

您可能想要:

SELECT a.*,
    w.month
FROM attacheddocs a
LEFT JOIN weeklyhrssummary w
    ON  a.userId = w.userid
    AND FIND_IN_SET(a.idattacheddocs,REPLACE(w.supportingDocIds, '\'', '')) <> 0
WHERE a.userID = 138;
选择一个*,
w、 月
来自Attachedtocs a
左连接每周HRSW摘要
在a.userId=w.userId上
并在集合中查找(a.idattacheddocs,替换(w.SupportingDocId,“\”))0
其中a.userID=138;
尽管您实际上可能需要一个
内部联接


请注意,在关系数据库的单个字段中存储多个项会违反规则。也就是说,这被认为是一个基本的设计缺陷。有时,出于充分的理由,大多数规范化级别都可以忽略,但忽略第一个规范化形式实际上总是不正确的。您应该有一个表,其中每个sup都有一条记录portingDocID.MySQL的独特之处在于它有一个类似于
FIND_in_SET()
的函数。大多数RDBMS都没有。

简单。请参阅规范化。这与用户无关。没有一条记录是其他表id的逗号分隔列表的问题。我不知道你在说什么。太好了!我明白了。