SELECT l.name
FROM locations as l
WHERE
l.location_id =',2,32,'
我们从另一个表中获得的“,2,32”值。此查询给出零结果,虽然有location_id = 2和32的值。请帮助我如何使用“,2,32”来获得结果?
答案 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)