-1

这是我的查询

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)

任何人都可以看到这里有什么问题吗?

4

2 回答 2

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

于 2016-12-13T23:44:58.520 回答
0

尽管你的新配方,它仍然非常不清楚。
不过,我会尽力给你一个答案,根据我能猜到的......

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

  • 你在 PHP 变量中有一些值:一$conserial和五$contact#,其中#1-5
  • 表结构至少包含以下列:con_serialcolumn2column3和 5contact#其中#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)
";
于 2016-12-14T01:04:49.700 回答