【发布时间】:2015-09-02 15:51:13
【问题描述】:
在谷歌搜索和查看 SO 之后,我发现了一个针对特定类型查询的无效解决方案。我有一个表格,用于转换文本中另一个表格的值。比方说:
id - text
1 - House
2 - Villa
3 - Camper
主表是
id - valueA - valueB - valueC
1 - 1 - whastington - 3000
2 - - NewYork - 5000
因此,如果我从主表中获取行,我会将 valueA 的值从 1 替换为 House,依此类推。
ValueA 在特定条件下设置。在任何其他情况下,它将留空(该字段不应为 NULL)。
如果我进行连接,第二行将被忽略,因为 valueA 为空白。查询是
SELECT id,text,valueB,valueC FROM main JOIN dic on main.valueA = dic.id
所以我想说:只有在 valueA 不为空时才执行连接 我把这个条件写成:
SELECT id,text,valueB,valueC FROM main
JOIN dic ON (main.valueA = dic.id AND main.valueA <>'')
正如我在this question 中所读到的,但我没有得到我想要的,可能是因为这种情况下的 AND 条件是基于另一个字段而不是基于连接的字段。我可以在字典表中使用 0 - NONE 对添加另一行,并将所有空 valueA 变为 0,但我想了解我的查询是否在正确的路径上以及我做错了什么。这种所谓的“条件连接”在 mysql 中是可能的吗? 我还查看了this question,但这个解决方案会使这个查询过于复杂,在这种情况下,我会选择用 0 替换空的“B 计划”
【问题讨论】:
-
您对示例数据的预期结果是什么?
-
我想从 main 中选择两行。使用普通连接,我错过了第 2 行