You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL嵌套查询list.data无法识别 报Data value not recognised错误

问题诱因
  • 子查询的SELECT字段列表中没有返回原始的t.data``字段,仅写了无别名的计算表达式DATE(t.data),这个表达式生成的列不会自动命名为data,外层查询引用list.data时找不到对应列,直接导致SQL执行失败返回布尔值false,最终触发mysqli_fetch_row()的参数类型错误。
  • 子查询内部的ORDER BY t.data DESC之所以能正常执行,是因为子查询阶段可以直接访问ticket表的原字段,但该字段没有被写入结果集传递给外层派生表list,外层自然无法识别。
修正方案

调整子查询的SELECT字段列表,明确返回需要在外层使用的字段,给计算生成的日期字段加独立别名避免冲突,修正后的语句如下:

SELECT list.* FROM (
  SELECT 
    t.`id_ticket`,
    ts.`status_pershkrim`,
    DATE(t.`data`) AS format_date,
    t.`data`,
    t.`klient_emer`, 
    t.`email`, 
    t.`nr_tel`, 
    nu.`urgjence_pershkrim`, 
    tp.`problematika_pershkrim`, 
    t.`detaje`, 
    t.`Stafi`,
    t.updated,
    u.emer AS caktuar,
    t.status_id,
    t.urgjence_id,
    t.Stafi_krijues,
    t.urgjence_kod
  FROM ticket t
  LEFT JOIN user u ON u.id = t.drejtuar
  LEFT JOIN tipi_problematikes tp ON t.tipi_problematikes = tp.problematika_id
  LEFT JOIN nivel_urgjence nu ON t.urgjence_id = nu.urgjence_id
  LEFT JOIN ticket_status ts ON t.status_id = ts.status_id
  LEFT JOIN nivel_urgjence uk ON t.urgjence_kod = uk.urgjence_kod
  WHERE vis = 1
  ORDER BY t.`data` DESC 
  LIMIT 100
) AS list 
ORDER BY list.`data` DESC, list.`urgjence_kod` ASC;

调整说明

  • 保留原始t.data``字段传递到外层,保证按带时分秒的完整时间排序的精度;如果只需要按日期维度排序,也可以直接给DATE(t.data)设置别名data,外层排序逻辑无需修改,但会丢失时分秒的排序精度。
  • 给DATE(t.data)生成的格式化日期字段设置独立别名format_date,避免和原始时间字段产生列名冲突。
  • 语句执行逻辑保持和原需求一致:先从主表取最新的100条记录,再对这100条记录按时间倒序、紧急程度编码升序做最终排序。

内容的提问来源于stack exchange,提问作者user18974397

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:36:16