在MYSQL中查询以获取来自另一个查询的两个值的结果

时间:2012-10-09 04:34:59

标签: mysql sql phpmyadmin

SELECT l.name 
FROM locations as l 
WHERE
    l.location_id =',2,32,'

我们从另一个表中获得的“,2,32”值。此查询给出零结果,虽然有location_id = 2和32的值。请帮助我如何使用“,2,32”来获得结果?

3 个答案:

答案 0 :(得分:1)

您需要将where子句更改为WHERE l.location_id LIKE '%2,32%'

它允许不只有2和32位于位置ID。

另一个建议是每个location_id使用一行。这称为normalization,了解使用它的原因非常重要。是的,它复制了一些数据,但它会使您的查询更容易。然后,您可以WHERE l.location_id IN (2,32)

修改

我刚刚重新阅读了您的问题,您的位置表似乎已经标准化了。您只想使用我发布的第二个WHERE子句。

答案 1 :(得分:1)

假设您要返回ID 2和32的值,可以使用此查询:

SELECT l.name FROM locations AS l WHERE l.location_id IN (2, 32);

IN运算符允许您在multiple-values子句中指定WHERE

你也可以使用NOT IN来消除certail ID,你也可以通过用逗号分隔它们来添加更多id。

答案 2 :(得分:0)

如果您的location_id列是包含逗号分隔值的VARCHAR列,那么您的WHERE子句应为

WHERE 
    (l.location_id LIKE '2,32%' OR l.location_id LIKE '%,2,32%' OR l.location_id LIKE '%,2,32')

但是如果您的location_id列是NUMERIC列,那么您打算获取其location_id为2或32的行应该由

解决
WHERE location_id IN (2, 32)