我有一个SQL表,我需要选择所有记录,其中用户名(MM_Session)位于列表中的另一个用户(用户SQL表,后面的列)中,这看起来像这样
username1 username2 username3 username4
到目前为止,我的SQL查询如下所示:
SELECT *
FROM Users
WHERE Users.Following_By LIKE '" . $_SESSION['MM_Username'] . "'
除非用户的用户名在列表后面的其他用户中,否则似乎不会返回任何值。
我应该使用'IN'代替'LIKE'吗?
有没有人有任何其他想法,为什么这不起作用?
由于
答案 0 :(得分:2)
如果您不在查询字符串中使用通配符,则LIKE
运算符与=
的运算符相同。将它们放在单词的前后,以匹配单词的任何出现:
SELECT *
FROM Users
WHERE Users.Following_By LIKE '%" . $_SESSION['MM_Username'] . "%'
虽然如果foobar
仅包含MM_USERname
,您可能会获得比预期更多的用户,因为它匹配例如foo
。您可以使用显式分隔符来防止这种情况。或者,更好的是,为列表条目使用单独的表,并使用外键将其加入Users
表。