mysql - 如何将 ID 列表通过管道传输到 MySQL select 语句

标签 mysql macos xargs

我有一个文本文件,其中包含如下 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/

相关文章:

bash - 在 *nix 命令行截断多个文件

bash - xargs 命令长度限制

mysql - 相当于 MySQL DATE_FORMAT() 的 SQL Server

mysql - 在 MySQL 中,是否可以将变量的值命名为列?

r - 无法安装cubature软件包(配置: error: C compiler cannot create executables)

css - 所有网站文本在 Mac 上的 safari 上都是粗体

macos - 使用 sed 执行递归查找和替换仅更改第一个文件

php - 如何检查电子邮件地址是否存在。验证

mysql查询获取具体记录

xcode - 在应用程序启动 OSX 时运行代码