Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php、mysql-选择具有多个值的列的行_Php_Mysql_Sql_Optimization_Query Optimization - Fatal编程技术网

php、mysql-选择具有多个值的列的行

php、mysql-选择具有多个值的列的行,php,mysql,sql,optimization,query-optimization,Php,Mysql,Sql,Optimization,Query Optimization,我有以下几种设置(有点过于简单): 数组(php):数组('a','b','c') 表1:id带有值(1)、(2)、(3)、(其他) 表2:id,idT1,value带有值(1,1,'a'),(2,1,'b'),(3,1,'c'),(4,2,'c'),(5,77,'w')(其他) 我需要从表1中选择行,这些行在表2中与数组中的所有值对应(在本例中是id col=1的行) 这样做的一种方法是(请忽略可能的拼写错误) 纠正我如果我错了,您想从表1中选择所有记录,该表在表2字段idT1上有ID。如果是

我有以下几种设置(有点过于简单):

数组(php):数组('a','b','c')

表1:
id
带有值(1)、(2)、(3)、(其他)

表2:
id
idT1
value
带有值(1,1,'a'),(2,1,'b'),(3,1,'c'),(4,2,'c'),(5,77,'w')(其他)

我需要从表1中选择行,这些行在表2中与数组中的所有值对应(在本例中是id col=1的行)

这样做的一种方法是(请忽略可能的拼写错误)


纠正我如果我错了,您想从表1中选择所有记录,该表在表2字段idT1上有ID。如果是这样的话,你可以试试

SELECT id
FROM table1
LEFT OUTER JOIN table2
ON table1.id=table2.idT1;
编辑:

因此,首先,需要使用php内爆行的数组

WHERE table2.value IN ('a','b','c')
然后对这一行进行php计数

HAVING COUNT(DISTINCT table2.value) = 3

这将取代3,而不是投票否决,但你弄错了一点。。。我需要从t1中获取所有记录,这些记录在t2中有相应的行,这些行的值加起来等于数组的总和。。。除了SQL注入问题,解释起来有点棘手吗?现在不关心注入问题,解决方案在某种程度上是有效的,因为我没有指定数组可能没有不同的元素(我当时没有想到)。并不能完全解决我的问题,但这是一个开始,我可以从这里开始,所以+1.@symcbean是的,我的回答是假设zozo已经知道如何避免SQL注入:)是的。。。这不是问题。
WHERE table2.value IN ('a','b','c')
HAVING COUNT(DISTINCT table2.value) = 3