我有两个表可以有多个记录链接到另一个表,但我不希望 mySQL 将行组合在一起。例子:
- test_main包含字段 mainID、field1。
- test_veg包含一个带有蔬菜名称的记录,链接到 test_main 中 ID=1 的记录
- test_fruit包含两个记录,每个记录都有一个水果的名称,都链接到 test_main 中 ID=1 的记录
在此示例中,有三个记录链接到 test_main——一个 test_veg 和两个 test_fruit。我想让这 3 行给出如下结果:
field1 vegName fruitName
------------------- ------- ---------
stuff in main table cabbage NULL
stuff in main table NULL apple
stuff in main table NULL pear
我还想要 test_main 中没有任何 test_veg 或 test_fruit 记录链接的记录。
这看起来很简单,但我无法让它工作。有任何想法吗?
如果我只有两个表(例如 test_main 和 test_veg),左连接就可以了。对于 3 个表,两个左连接只返回两行:
SELECT test_main.field1, test_veg.vegName, test_fruit.fruitName
FROM test_main
LEFT JOIN test_veg ON test_veg.mainID = test_main.mainID
LEFT JOIN test_fruit ON test_fruit.mainID = test_main.mainID
WHERE test_main.mainID=1
field1 vegName fruitName
------------------- ------- ---------
stuff in main table cabbage apple
stuff in main table cabbage pear
注意我坚持使用 mySQL3,这意味着在 WHERE 中没有像 SELECT 这样的花哨的东西,也没有 UNION。