SELECT l.name
FROM locations as l
WHERE
l.location_id =',2,32,'
我们从另一个表中得到的“,2,32”值。这个查询给出的结果为零,尽管有 location_id=2 的值和 32。请帮助我如何使用“,2,32”来获得结果?
SELECT l.name
FROM locations as l
WHERE
l.location_id =',2,32,'
我们从另一个表中得到的“,2,32”值。这个查询给出的结果为零,尽管有 location_id=2 的值和 32。请帮助我如何使用“,2,32”来获得结果?
您需要将 where 子句更改为WHERE l.location_id LIKE '%2,32%'
.
它允许在位置 ID 中不仅仅是 2 和 32。
另一个建议是每个 location_id 使用一行。这称为规范化,重要的是要了解为什么要使用它。是的,它复制了一些数据,但它会使您的查询更容易。然后你就可以做到了WHERE l.location_id IN (2,32)
。
编辑:
我刚刚重新阅读了您的问题,看来您的位置表已经标准化。您只想使用我发布的第二个 WHERE 子句。
假设您要返回 ID 2 和 32 的值,您可以使用以下查询:
SELECT l.name FROM locations AS l WHERE l.location_id IN (2, 32);
IN
运算符允许您multiple-values
在WHERE
子句中指定
您还可以NOT IN
用来消除某些 ID,也可以添加更多 ID,只需用逗号分隔它们即可。
如果您的 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)