php、mysql-选择具有多个值的列的行
我有以下几种设置(有点过于简单): 数组(php):数组('a','b','c') 表1: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。如果是
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