两个表中的SQL SELECT - 需要加入吗?

时间:2013-01-20 21:27:29

标签: sql select join

如何从这两张表中获取所有数据:

   Events
    cid   date
    1    1/12/2013
    2    2/2/2013
    1    5/5/2014

   Clients
    cid  name     gender
    1    david    male
    2    ashley   female
    3    barak    male

我想请求使用cid数据获取所有事件,如:

Final
   cid   date         name    gender
   1     1/12/2013    david   male
   2     2/2/2013     ashley  female
   1     5/5/2013     david   male

5 个答案:

答案 0 :(得分:2)

假设您的要求是SELECT *(为什么),那么您可以将所有先前的答案包装在子查询中。像这样:

select * from 
(
  SELECT
  E.cid, 
  date, 
  name, 
  gender
FROM Events E
LEFT JOIN Clients C
  ON E.cid = C.cid) t

SQL Fiddle

祝你好运。

答案 1 :(得分:0)

select * from Events join Clients on Clients.cid = Events.cid;

答案 2 :(得分:0)

SELECT
  E.cid, 
  date, 
  name, 
  gender
FROM Events E
LEFT JOIN Clients C
  ON E.cid = C.cid

左连接负责处理事件cid

的客户端表中没有条目的位置

如果表之间存在参照完整性,并且您可以保证客户端表中至少有一个条目,则可以使用INNER JOIN替换LEFT JOIN。但这完全取决于您拥有的数据以及您的查询约束条件。

除非您确定不排除相关数据,否则永远不要假设INNER JOIN。

答案 3 :(得分:0)

您需要JOIN表:

select e.cid,
  e.date,
  c.name,
  c.gender
from clients c
inner join events e
  on e.cid = c.cid

请参阅SQL Fiddle with Demo

如果您需要帮助学习联接语法,这里有一个很棒的visual explanation of joins

我使用INNER JOIN来连接表,这将返回clients表中events表中具有匹配行的所有行。如果您想要返回clients表中的所有events而不管LEFT JOIN表中的哪一行,那么您可以使用{{1}}

答案 4 :(得分:0)

表格以首字母大写

SELECT e.cid, e.date, c.name, c.gender
FROM Events AS e
LEFT JOIN Clients AS c
ON e.cid = c.cid