我有一个以逗号分隔的用户 ID 文件。我想为这些用户
SELECT
。
也就是说我想它应该是这样的:
mysql> SELECT u.token, u.user_id FROM users u WHERE u.user_id IN (SELECT * LOAD_FILE('/home/alex/lzmigration/users'));
不知怎的,这个
LOAD_FILE
的东西不起作用。我不确定我是否明白为什么。
我收到此错误:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 'LOAD_FILE('/home/alex/lzmigration/users'))' 附近使用的正确语法
这是版本信息。
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.35-27 |
+-----------+
要匹配以逗号分隔的字符串,您必须使用
FIND_IN_SET()
函数; IN
用于 SQL 中的文字列表或返回多行的子查询。
SELECT u.token, u.user_id
FROM users u
WHERE FIND_IN_SET(u.user_id, LOAD_FILE('/home/alex/lzmigration/users'));
确保文件中逗号周围没有空格,因为
FIND_IN_SET()
不会忽略它们。