Sql 在select查询中是否可以使用同一个表两次?
嗨,我有以下问题,我想知道它是什么意思:Sql 在select查询中是否可以使用同一个表两次?,sql,Sql,嗨,我有以下问题,我想知道它是什么意思: SELECT c1.id as sender, c2.id as replier FROM contacts c1, contacts c2; 如何两次使用同一个表?答案很简单:使用示例中列出的查询。它应该很好用。虽然这可能是一个坏主意,但如果您想两次使用同一个表,请注意必须连接“那些”表,因为它们是不同的: SELECT c1.id as sender, c2.id as replier FROM contacts c1, contacts c
SELECT c1.id as sender, c2.id as replier
FROM contacts c1, contacts c2;
如何两次使用同一个表?答案很简单:使用示例中列出的查询。它应该很好用。虽然这可能是一个坏主意,但如果您想两次使用同一个表,请注意必须连接“那些”表,因为它们是不同的:
SELECT c1.id as sender, c2.id as replier
FROM contacts c1, contacts c2
WHERE sender.id = replier.id
在查询中使用一个表两次,方法是给它两个名称,如下所示 别名通常与关键字AS一起引入。通常还可以指定联接条件(如果没有联接条件,则会得到与自身联接的表的名称)。对于首选项,您使用显式联接表示法
SELECT c1.id AS sender, c2.id AS replier
FROM contacts AS c1
JOIN contacts AS c2 ON c1.xxx = c2.yyy;
在本例中,不清楚哪些列可用于联接;我们没有任何信息来帮助解决这个问题
通常,会有另一个表作为中介,例如消息表:
SELECT c1.id AS sender, c1.email AS sender_email,
c2.id AS replier, c2.email AS replier_email,
m.date_time
FROM messages AS m
JOIN contacts AS c1 ON m.sender_id = c1.id
JOIN contacts AS c2 ON m.replier_id = c2.id;
此查询创建一个包含所有可能的联系人ID对的表 例如,如果您的联系人ID为1、2和3,则会得到
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
是的,通过给同一个表指定不同的别名,可以使用同一个表两次。我认为学习自联接将有助于您理解。是的,您可以在同一个
SELECT
查询中多次使用同一个表
请注意,只有当表在同一范围内多次出现时,才需要使用表关联名称(俗称“别名”)。例如,以下SELECT
查询两次使用同一个表,但由于每个表都在不同的范围内(每个表都由UNION
关键字分隔),因此不需要表关联名称:
SELECT id, 'Sender' AS contact_narrative
FROM contacts
WHERE something = 1
UNION
SELECT id, 'Replier' AS contact_narrative
FROM contacts
WHERE something = 2;
试试看。答案是肯定的b您没有WHERE子句的表
sender
或replier
。当两个表是同一个表时,您所说的“注意您必须连接那些不同的”表是什么意思还不完全清楚。