查询基于第三主表的2个表

时间:2017-03-08 18:21:32

标签: mysql join

我想把头缠在JOINS上。 我尝试了很多连接而没有成功。

考虑以下表格:

Allsongs

+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| ID     | int(11)      | NO   | PRI | NULL    |       |
| Artist | varchar(100) | YES  |     | NULL    |       |
| Title  | varchar(100) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+

几个不同的艺术家表:即猫王,披头士等

+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| ID     | int(11) | NO   | PRI | NULL    |       |
| Songid | int(11) | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+

艺术家表中的Songid字段与allsongs.id字段

相同

我正在尝试创建一个将以下查询加入一个查询的查询

select s.title from allsongs s
join beatles b ON s.id = b.songid;

select s.title from allsongs s
join elvis e ON s.id = e.songid;

我认为这可行:

select s.title from allsongs s
join beatles b ON s.id = b.songid
join elvis e ON s.id = e.songid;

但它给出:空集。

如果我使用左外连接,只要我手动限制行数

,它就能完成我想要的操作

我希望我足够清楚。任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

你可以用联盟做到这一点。两个查询都需要返回具有相同数据类型顺序的相同数量的列。列名来自第一个select语句,以防您之后想要执行订单或之后的任何操作。

  db.urColl.update(
    { x: "h" },
    { $push: { arr: { $each: [6,8] } } },
    { multi: true }
  );`