mysql - 如何在 laravel 中使用 FIND_IN_SET 获取最后更新的记录?
问题描述
我在查询中使用 find_in_set 从逗号分隔字段中获取数据。但它告诉我错误。
$results = DB::select("SELECT basic.updated_at,basic.updated_by,,ccbi.team_group_id,basic.id
FROM basic_info as basic
INNER JOIN emp_info as emp_details
ON basic.emp_master_id = emp_details.emp_id
WHERE basic.id IN (SELECT basic.id FROM basic_info as basic WHERE basic.updated_at = (SELECT MAX(basic.updated_at) FROM basic_info as basic)) AND basic.team_id = '1' AND ('FIND_IN_SET(?,emp_details.emp_grp)' , '18') ORDER BY basic.id DESC LIMIT 1");
上面的查询显示我的错误:
Cardinality violation: 1241 Operand should contain 1 column(s)
如果我删除AND ('FIND_IN_SET(?,emp_details.emp_grp)' , '18')
这部分,它将返回正确的结果。
解决方案
您的查询中有几个拼写错误。我没有将所有内容添加到 aDB::select()
中,而是稍微清理了您的查询:
return DB::table('basic_info')
->select('basic_info.updated_at', 'basic_info.updated_by', 'basic_info.id')
->join('emp_info', 'basic.emp_master_id', 'emp_info.emp_id')
->whereRaw("basic_info.id IN (SELECT basic_info.id FROM basic_info WHERE basic_info.updated_at = (SELECT MAX(basic_info.updated_at) FROM basic_info) AND basic_info.team_id = '1' AND FIND_IN_SET('18',emp_details.emp_grp) ORDER BY basic_info.id DESC LIMIT 1)")
->get();
以下内容对您有用吗?
推荐阅读
- azure - 将根 CA 添加到 Azure 应用服务以进行客户端证书身份验证
- android - 在 Android Studio 中调试 C++/Native 代码不适用于较旧的 Android SDK API 版本
- flutter - Flutter expandable tiles inside grid view
- python - Git 命令中的管道运算符返回错误“致命:格式错误的对象名称 |”
- mysql - 5个数据库之间的MYSQL函数MAX()
- amazon-web-services - 从 Nextjs 无服务器函数安全地连接到 AWS Elasticsearch
- powershell - If/Then - 即使条件为假也执行
- python - 尝试对数据进行高斯+线拟合
- sql - 将 NULL 替换为 0
- mysql - Symfony 5 和 Doctrine,找不到使用 3 个相关实体获取结果的方法