【问题标题】:MySQL Workbench Query returns 1 row, but same query in Jdbc returns 0MySQL Workbench 查询返回 1 行,但 Jdbc 中的相同查询返回 0
【发布时间】:2019-02-25 08:50:11
【问题描述】:

我写了一个查询,当我在 MySQL Workbench 中运行它时返回 1 行:

SELECT lot_num, block_num, base_price, SUM(price) AS options_price FROM lots AS l 
INNER JOIN models AS m ON l.model_id = m.id 
INNER JOIN lot_options AS lo ON l.id = lo.lot_id 
INNER JOIN options AS o ON lo.option_id = o.id 
GROUP BY l.id

当我尝试在 Jdbc 中运行它时,我得到 0 个结果。这是我为 Jdbc 格式化字符串的方式:

SELECT lot_num, block_num, base_price, SUM(price) AS options_price FROM lot AS l INNER JOIN models AS m ON l.model_id = m.id INNER JOIN lot_options AS lo ON l.id = lo.lot_id INNER JOIN options AS o ON lo.option_id = o.id GROUP BY l.id;

这不会给我提供错误或任何东西。只是一个空的结果集。

我不知道这个查询哪里出错了!请赐予我您对 SQL 的掌握!

【问题讨论】:

  • 能不能把条件一一去掉,看看结果,找出问题所在。没有数据库数据,我在这里什么也说不出来。
  • 如果您的查询相同,连接用户是否相同?
  • select * from lots
  • 您是否尝试过再次在 SQL WorkBench 中执行格式化查询?
  • 这只是一个测试数据库,所以lots表中只有3个结果。当我运行 select * from lots; 时,它会返回所有 3 个条目。

标签: mysql sql jdbc mysql-workbench


【解决方案1】:

我想通了。我对 JOIN 语句知之甚少。多对多表需要 LEFT OUTER 连接。我不知道为什么我的原始查询在 Workbench 中有效,但在我的 Jdbc 连接中无效。这两者都适用!

SELECT lot_num, block_num, models.base_price, SUM(o.price) FROM lots 
INNER JOIN models ON models.id = lots.model_id
LEFT OUTER JOIN lot_options AS lo ON lots.id = lo.lot_id 
LEFT OUTER JOIN options AS o ON lo.option_id = o.id
GROUP BY lots.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多