mysql -my代码中的嵌套select语句不起作用

时间:2016-12-13 20:45:34

标签: mysql nested-select

这是我的查询

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."')   

在内部选择我希望获得在其5个列中的一个中具有此值$conserial的行(contact1 ... contact5)

和外部选择从中选择其列con_serial是其中一个变量的行($ contact1 ... $ contact5)

有人能看到这里有什么问题吗?

2 个答案:

答案 0 :(得分:0)

我猜在where子句中的总和部分是坚果允许的 我用这两个IN来解决这个问题

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的任何方式;)

答案 1 :(得分:0)

尽管你的新配方,仍然非常不清楚 尽管如此,我会根据我的猜测给你一个答案......

首先,我将如何重新制定您的需求:

  • 您在PHP变量中有一些值:一个$conserial和五个$contact# #是1-5
  • 表格结构至少包含以下列:con_serialcolumn2column3和五个contact# #为1-5
  • 你想要选择两者的行(这是你需要的最奇怪的部分):
    • 至少有一个contact#列符合PHP $conserial
    • con_serial列至少匹配一个PHP $contact#

那就是说,请注意,您不需要有两个嵌套SELECT:您只希望每一行满足两个条件,因此它们可以在WHERE子句中进行AND运算。 / p>

基于此,您的查询应为:

$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)
";