Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql匹配并输出两行_Mysql - Fatal编程技术网

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-

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-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.再次,您应该考虑重新设计表。如果不这样做的话,你会遇到很多麻烦的问题。