【问题标题】:SQL subQuery in WHERE clause returns nothingWHERE 子句中的 SQL 子查询不返回任何内容
【发布时间】:2017-11-21 11:32:28
【问题描述】:

我正在使用同一张表中的子查询来执行此查询。

SELECT p.codigo_cl client_code, p.n_ordem proposal_id, p.data proposal_data, p.baumuster proposal_baumuster, p.vendedor proposal_seller_code, p.modelo proposal_model, p.preco_base proposal_base_price, p.preco_ext proposal_extras, p.ia proposal_ia, p.desconto proposal_discount
FROM proposta.DBF p 
INNER JOIN cliente.dbf c ON c.processo = p.codigo_cl 
WHERE p.N_ORDEM = (SELECT MAX(N_ORDEM) FROM proposta.DBF)

所以子查询没有返回 N_ORDEM 的最大值,结果为空。

我正在使用 Microsft Visual Fox Pro OLEDB 提供程序

从子查询返回的值只是为了获取同一张表的最大值用于WHERE子句。

然后我将数据转换成 json 格式发布到我的服务器

【问题讨论】:

  • SELECT MAX(N_ORDEM) FROM proposta.DBF 自己会给出结果吗?你试过SELECT MAX(p2.N_ORDEM) FROM proposta.DBF p2
  • 删除 [mysql] 标签。
  • 您应该提供样本数据和期望的结果。
  • 是的,我尝试了SELECT MAX(N_ORDEM) FROM proposta.DBF,它返回了所需的结果。 N_ORDEM 的最大值。

标签: sql oledb visual-foxpro


【解决方案1】:

这行得通吗?

SELECT N_ORDEM
FROM proposta.DBF p 
WHERE p.N_ORDEM = (SELECT MAX(N_ORDEM) FROM proposta.DBF)

如果是,则一次添加一个功能,例如连接。

SELECT N_ORDEM
FROM proposta.DBF p 
INNER JOIN cliente.dbf c ON c.processo = p.codigo_cl
WHERE p.N_ORDEM = (SELECT MAX(N_ORDEM) FROM proposta.DBF)

【讨论】:

  • 谢谢您的反馈。通过尝试您的代码,我发现问题是数据库的一些不一致。因此,INNER JOIN 不起作用。感谢支持
【解决方案2】:

您可能需要一个相关的子查询。准确猜测您想要什么有点困难,但有根据的猜测是:

SELECT p.codigo_cl client_code, ...
FROM proposta.DBF p INNER JOIN
     cliente.dbf c
     ON c.processo = p.codigo_cl 
WHERE p.N_ORDEM = (SELECT MAX(p2.N_ORDEM)
                   FROM proposta.DBF p2
                   WHERE p2.codigo_cl = p.codigo_cl
                  );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多