MySQL查询语法Multiple where和or。完整性检查?

时间:2012-07-04 08:42:32

标签: php mysql

我相信我的查询可以进行广泛的优化,但无法说明我的想法。

我所拥有的是一个像我的成员那样的帖子/评论概念。他们可以选择与特定的人或每个人分享。因此,我知道我的查询可能会导致重复的结果(如果我可以让它首先工作)。我需要在找到用户ID时获得一个独特的“ciID”,以及其中提到的任何潜在ID。成员的ID存储在3个不同的列中,原因有三种。

mID是会员本身,然后与他们分享,而且有些人说话。我将id存储在sharedWith中,并将whos_with存储为1111:2222:3333但是我必须在所有3列中搜索共享的成员ID,以及确保我获得ID通过函数传递的所有结果的所有列在数组中。在通过循环构建查询后,我想出了一个像

这样的查询
select DISTINCT(ciID),* from user_posting 
where (mID = 21 OR sharedWith LIKE '%21%' OR whosWith LIKE '%21%') 
or (mID = 22 OR sharedWith LIKE '%22%' OR whosWith LIKE '%22%') 
or (mID = 45 OR sharedWith LIKE '%45%' OR whosWith LIKE '%45%')
limit 1
在某个地方,我有一个语法错误,我没有注意到,我需要一双眼睛来帮助我

1 个答案:

答案 0 :(得分:3)

这绝对是错误的:

select DISTINCT(ciID),* from user_posting 

应该是:

select DISTINCT(up.ciID), up.* from user_posting up 

但是我不确定这是否会返回预期结果。

我认为您需要重新设计表结构。使用LIKE选择不会扩展该优势。