【问题标题】:How to get last updated record with FIND_IN_SET in laravel?如何在 laravel 中使用 FIND_IN_SET 获取最后更新的记录?
【发布时间】:2019-01-27 07:30:30
【问题描述】:

我在查询中使用 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') 这部分,它将返回正确的结果。

【问题讨论】:

  • 在我看来,如果你发现自己使用了 find_in_set,那么你已经迷路了。 :-( - 虽然我会承认它 非常快
  • 您在,,ccbi.team_group_id 附近的查询中有一个额外的,。还有ccbi 来自哪里?
  • @Mozammil 它的错字兄弟。请忽略这部分

标签: mysql laravel find-in-set


【解决方案1】:

您的查询中有几个拼写错误。我没有将所有内容都添加到 DB::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();

以下内容对您有用吗?

【讨论】:

  • 感谢您的回答兄弟,但它无法正常工作,出现Syntax error or access violation的错误
  • 抱歉,忘记删除一条语句。编辑了我的答案。更新的能用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2013-12-17
  • 2019-12-09
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多