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

Nested select statement in mysql -my code doesn't work

这是我的查询

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

在内部 select 我希望在其 5 列(contact1...contact5)

之一中获得具有此值 $conserial 的行

和外部 select 从中选择行,它们的列 con_serial 是变量之一 ($contact1...$contact5)

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

我猜 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 的地方 ;)

尽管你有新的表述,但仍然很不清楚。
不过,我会根据我的猜测尝试给你一个答案...

首先,我将如何重新表述您的需求:

  • 你在 PHP 变量中有一些值:一个 $conserial 和五个 $contact# 其中 # 是 1-5
  • table 结构至少包含以下列:con_serialcolumn2column3 和五个 contact#,其中 # 是1-5
  • 你想要 select 两行(这是你需要的最奇怪的部分):
    • 至少有一个 contact# 列匹配 PHP $conserial
    • con_serial 列至少匹配 PHP $contact# 值之一

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

基于此,您的查询应该是:

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