我有一个文本文件,其中包含如下 ID 列表:
123
456
789
我想在查询中使用它们来查找有关这些项目的更多信息。到目前为止我已经尝试过但没有成功:
ojit_代码
最佳答案
IDS=$(cat /path/to/file)
IDS=$(echo $IDS | sed 's/\s\s*/,/g')
#or IDS=$(echo $IDS | awk '{$1=$1}1' RS= OFS=,) on OSX
echo "SELECT * FROM table WHERE id in ($IDS)" | mysql -u uname -p database
第 1 行将 ids 加载到变量中,这样可以轻松替换第 2 行中的换行符,然后用逗号替换空格以使用 IN ()
构造。
编辑 1 和 2 查看评论
编辑3
在 OSX(我不使用或无法访问)上,sed
似乎不喜欢我的正则表达式。正如OP指出的,使用 IDS=$(echo $IDS | awk '{$1=$1}1' RS= OFS=,)
作为第 2 行可以解决这个问题。
关于mysql - 如何将 ID 列表通过管道传输到 MySQL select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23144861/