Mysql匹配并输出两行
Mysql查询以匹配和连接给定日期的两行。嗨,我是新手,已经在谷歌上搜索了好几天了,但是我找不到答案。请帮助解决以下问题 我有一张桌子:人Mysql匹配并输出两行,mysql,Mysql,Mysql查询以匹配和连接给定日期的两行。嗨,我是新手,已经在谷歌上搜索了好几天了,但是我找不到答案。请帮助解决以下问题 我有一张桌子:人 Id Leader Name1 Name2 StartDate EndDate 123 1 Person1 2013-02-11 2013-02-17 123 0 Person2 2013-02-13 2013-02-13 123 0 Person3 2013-
Id Leader Name1 Name2 StartDate EndDate
123 1 Person1 2013-02-11 2013-02-17
123 0 Person2 2013-02-13 2013-02-13
123 0 Person3 2013-02-13 2013-02-13
我有个问题
(SELECT t1.Id, t1.Name1, t1.Name2
FROM `dbo`.`people` t1
WHERE t1.StartDate >= '2013-02-11'
AND t1.Leader = 1)
UNION
(SELECT t2.Id, t2.Name1, t1.Name2
FROM `dbo`.`people` t2
WHERE t2.StartDate >= '2013-02-11'
AND t2.Leader = 0)
这是回报
Id Name1 Name2
123, Person1
Id Name1 Name2
123, Person1
123, Person2
123, Person3
我有个问题
(SELECT t1.Id, t1.Name1, t1.Name2
FROM `dbo`.`people` t1
WHERE t1.StartDate >= '2013-02-13'
AND t1.Leader = 1)
UNION
(SELECT t2.Id, t2.Name1, t1.Name2
FROM `dbo`.`people` t2
WHERE t2.StartDate >= '2013-02-13'
AND t2.Leader = 0)
这是回报
Id Name1 Name2
123, Person1
Id Name1 Name2
123, Person1
123, Person2
123, Person3
我需要2012-02-11的结果来显示
Id Name1 Name2
123, Person1 null
2012年2月13日的展览
Id Name1 Name2
123, Person1 Person2
123, Person1 Person3
你为什么要这样做?您知道union将两个结果集相加而不进行比较,是吗?也许你想做一个自我连接?如果是这样,您可以在这里找到一个示例: 另外,您的表是否正常化?看见 如果你把桌子分开,你可能会玩得更开心。一个常见的初学者错误是试图将太多的信息塞进一个表中。为什么有“名称1”和“名称2”?如果存储的信息与非引线不同,那么您可能应该有一个单独的“引线”表,然后将它们与id关联。为什么表中的id列总是相同的?那是什么身份证?不知何故,这些人是同一个群体的一部分吗 以下是一些关于连接的补充信息,可能有助于您理解:
您的表定义是否包含Name2的NOTNULL?如果包含此查询的结果,可能会有所帮助:Explain peopleField、Type、Null、Key、Default、Extra Counter、int(11)、NO、PRI、Null、id、int(11)、YES、Null、leader、int(11)、YES、Null、name1、varchar(45)、YES、Null、name、varchar(45)、YES、Null、startdate、varchar(45)、YES、Null、enddate、varchar(45)、YES、Null、,我理解同一个表上join的语法。这个查询结果的join语法是什么:(从
dbo
peoplet1其中t1.StartDate>='2013-02-13'和t1.Leader=1)UNION(从dbo
peoplet2其中t2.StartDate>='2013-02-13'和t2.Leader=0中选择t2.Id、t2.Name1、t1.Name2)语法将与我的答案中的self-join相同。您希望您的选择具有T1.NAME1,T2.NAME2,并加入ID.再次,您应该考虑重新设计表。如果不这样做的话,你会遇到很多麻烦的问题。