mysql 中的嵌套选择语句 - 我的代码不起作用



这是我的查询

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_serialcolumn2column3和五个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;)

相关内容

  • 没有找到相关文章

最新更新