【问题标题】:Need help forming SQLite join query需要帮助形成 SQLite 连接查询
【发布时间】:2012-02-28 01:43:33
【问题描述】:

我已经能够使用 MS Access 2010 进行查询,这正是我想要的,但我在 SQLite3 中遇到了麻烦。这是访问 SQL

SELECT pubacc_lo.*
FROM pubacc_en 
LEFT JOIN pubacc_lo ON pubacc_en.call_sign = pubacc_lo.call_sign;

基本上,它会选择 pubacc_lo 表中的所有列以及表之间 call_sign 字段相等的行。 这不会将任何 pubacc_en 数据选择到 MS Access 中的最终查询中。

在 SQLite 3 中玩耍,我得到的最接近的是

SELECT * FROM PUBACC_LO, PUBACC_EN WHERE PUBACC_en.call_sign=PUBACC_LO.call_sign

但是这个语句选择了 EN 表和 LO 表中的所有数据(交叉连接?)。我尝试了一些左外连接,但没有任何运气。任何提示将不胜感激!

【问题讨论】:

  • 原始语法应该可以在 SQLite3 中使用。尝试时会得到什么结果(或错误消息)?
  • 为什么不使用与访问相同的查询? SQLite 应该给出相同的结果?

标签: sql join sqlite


【解决方案1】:

您应该能够使用从 Access 获得的相同查询。 SQLite3 确实支持左外连接。

至于您的查询,如果您只需要 LO 表中的字段,请在 SELECT 子句中这样询问:

SELECT PUBACC_LO.* 
FROM PUBACC_LO, PUBACC_EN 
WHERE PUBACC_en.call_sign=PUBACC_LO.call_sign 

但这里的问题是它只会返回 call_signs 和两个表中的条目,而来自访问的外连接将返回来自 PUBACC_EN 的所有行,而不管是否有相应的 PUBACC_LO 条目..

【讨论】:

  • 感谢大家的帮助。我不知道为什么我认为 Access 代码在 SQlite3 中不起作用,但确实如此,我现在觉得自己很愚蠢
  • 好的,我可以建议您通过单击它的复选标记来接受答案 - 这将有助于确保您的问题在未来得到快速回答..
【解决方案2】:
 SELECT pubacc_lo.* FROM PUBACC_LO, PUBACC_EN WHERE UBACC_en.call_sign=PUBACC_LO.call_sign

如果你只想选择pubbac_lo的字段,这个可以用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多