这是我的查询
SELECT con_serial,column2,column3
FROM
(SELECT con_serial,column2,column3
FROM big_table
WHERE ISNULL(contact1, '')+'#'+ISNULL(contact2, '')+'#'+ISNULL(contact3, '')+'#'+ISNULL(contact4, '')+'#'+ISNULL(contact5, '')
LIKE '%' + '".$conserial."' + '%') AS a
WHERE con_serial
IN('".$contact1."','".$contact2."','".$contact3."','".$contact4."','".$contact5."')
在内部选择中,我希望获得具有此值$conserial
的行中的5列之一(Contact1 ... Contact5)
和外部选择以从中选择其列con_serial
是变量之一($ contact1 ... $ contact5)
有人可以看到这里有什么问题吗?
尽管您的新配方仍然非常不清楚。
尽管如此,我还是会根据我的猜测给您一个答案...
首先是我如何重新制定您的需求:
- 您在PHP变量中有一些值:一个
$conserial
和五个$contact#
,其中#
为1-5 - 表结构至少包含以下列:
con_serial
,column2
,column3
和五个contact#
,其中#
为1-5 - 您想选择两者的行(这是您需求中最奇怪的部分):
-
contact#
列中的至少一列与PHP$conserial
值
匹配 -
con_serial
列匹配至少一个PHP$contact#
值
-
也就是说,请注意,您不需要有两个嵌套的SELECT
:您只希望每行满足两个条件,因此它们可以在WHERE
条款中被安排。
基于此,您的查询应为:
$query = "
SELECT con_serial, column2, column3
FROM big_table
WHERE con_serial IN ('$contact1', '$contact2', '$contact3', '$contact4', '$contact5')
AND '$con_serial' IN (contact1, contact2, contact3, contact4, contact5)
";
我猜我允许子句中的总和部分无论如何,我都使用两个中的两个解决了这个问题
SELECT con_serial,,column2,column3
FROM(SELECT con_serial,column2,column3
FROM
big_table
WHERE '".$conserial."' IN(contact1,contact2,contact3,contact4,contact5)) a
WHERE con_serial IN('".$contact1."','".$contact2."','".$contact3."','".$contact4."','".$contact5."'
这是我想要的tnx;)