Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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
Php 您可以使用数据并在那里查询。请为您的答案添加解释。如果每个ID1有两个以上的日期,ID2组合是否仍然有效?这取决于您称之为工作的内容:它将返回两条记录ise1a表?如果是这样,我只使用一个表。e和e1是同一个表(email)。它是自连接的。那你去看了sql_Php_Mysql - Fatal编程技术网

Php 您可以使用数据并在那里查询。请为您的答案添加解释。如果每个ID1有两个以上的日期,ID2组合是否仍然有效?这取决于您称之为工作的内容:它将返回两条记录ise1a表?如果是这样,我只使用一个表。e和e1是同一个表(email)。它是自连接的。那你去看了sql

Php 您可以使用数据并在那里查询。请为您的答案添加解释。如果每个ID1有两个以上的日期,ID2组合是否仍然有效?这取决于您称之为工作的内容:它将返回两条记录ise1a表?如果是这样,我只使用一个表。e和e1是同一个表(email)。它是自连接的。那你去看了sql,php,mysql,Php,Mysql,您可以使用数据并在那里查询。请为您的答案添加解释。如果每个ID1有两个以上的日期,ID2组合是否仍然有效?这取决于您称之为工作的内容:它将返回两条记录ise1a表?如果是这样,我只使用一个表。e和e1是同一个表(email)。它是自连接的。那你去看了sqlfiddle吗?这里非常清楚,您可以在那里使用数据并进行查询。E1和E2这两个表对吗?如果是这样的话,我只有一个表。这很管用,伙计,当我在phpmyadmin和php上测试代码时,我确实非常理解你的代码。E1和E2是表别名。在第一个示例中,我们



您可以使用数据并在那里查询。请为您的答案添加解释。如果每个ID1有两个以上的日期,ID2组合是否仍然有效?这取决于您称之为工作的内容:它将返回两条记录is
e1
a表?如果是这样,我只使用一个表。
e
e1
是同一个表(
email
)。它是自连接的。那你去看了sqlfiddle吗?这里非常清楚,您可以在那里使用数据并进行查询。
E1
E2
这两个表对吗?如果是这样的话,我只有一个表。这很管用,伙计,当我在phpmyadmin和php上测试代码时,我确实非常理解你的代码。E1和E2是表别名。在第一个示例中,我们对数据子集执行自联接,该数据子集已过滤为仅包含Id1和ID2组合的最新电子邮件。就性能而言,第二种可能是最有效的。它使用了相关子查询的概念,该子查询也使用来自同一表的两组数据。子查询基于ID1和ID2组合进行连接,然后使用having子句将结果限制为每个ID1、ID2组合的电子邮件,并使用最大邮件_日期。简单地说:E1和E2是同一个表(数据集/记录集)上的别名,我们对每个别名进行不同的筛选以获得所需的结果。在每个查询的第二个选择(E2)中,我们只得到每个ID1、ID2的最大值(邮件日期)。这允许我们使用这3条数据从整个数据集中获取所需的URL。(E1)。就ID1、ID2和mail_date上的适当索引的性能而言,我知道没有比上面第二个更高性能的查询了;至少不会,除非引擎在做出错误选择时出现问题,这种情况并不经常发生(如果它没有按预期使用索引,你必须观察一段时间)。您应该让数据库引擎决定使用或不使用哪个现有索引来实现最佳性能。您只需要确保在电子邮件表上有ID1、ID2和日期的索引。性能调整本身就是一门科学,因此最好让引擎决定什么是最佳的,在知道性能有问题之前不要犹豫。您只需要在ID1、ID2和邮件日期
E1
E2
上建立索引,这两个表对吗?如果是这样的话,我只有一个表。这很管用,伙计,当我在phpmyadmin和php上测试代码时,我确实非常理解你的代码。E1和E2是表别名。在第一个示例中,我们对数据子集执行自联接,该数据子集已过滤为仅包含Id1和ID2组合的最新电子邮件。就性能而言,第二种可能是最有效的。它使用了相关子查询的概念,该子查询也使用来自同一表的两组数据。子查询基于ID1和ID2组合进行连接,然后使用having子句将结果限制为每个ID1、ID2组合的电子邮件,并使用最大邮件_日期。简单地说:E1和E2是同一个表(数据集/记录集)上的别名,我们对每个别名进行不同的筛选以获得所需的结果。在每个查询的第二个选择(E2)中,我们只得到每个ID1、ID2的最大值(邮件日期)。这允许我们使用这3条数据从整个数据集中获取所需的URL。(E1)。就ID1、ID2和mail_date上的适当索引的性能而言,我知道没有比上面第二个更高性能的查询了;至少不会,除非引擎在做出错误选择时出现问题,这种情况并不经常发生(如果它没有按预期使用索引,你必须观察一段时间)。您应该让数据库引擎决定使用或不使用哪个现有索引来实现最佳性能。您只需要确保在电子邮件表上有ID1、ID2和日期的索引。性能调整本身就是一门科学,因此最好让引擎决定什么是最佳的,在知道性能有问题之前不要犹豫。您只需要在ID1、ID2和mail\u日期上建立索引
id | url | id1 | id2 | mail_date | message
id | url | id1 | id2 | mail_date | message

1  | aaa | 2   | 8   | JAN 2016  | blah blah
2  | bbb | 4   | 8   | FEB 2016  | blah blah
3  | aaa | 8   | 2   | MAR 2016  | blah blah
4  | bbb | 8   | 4   | APR 2016  | blah blah
5  | bbb | 4   | 8   | MAY 2016  | blah blah
6  | aaa | 2   | 8   | JUN 2016  | blah blah
7  | bbb | 8   | 4   | JUL 2016  | blah blah
8  | aaa | 8   | 2   | AUG 2016  | blah blah
SELECT DISTINCT url, id1, id2 FROM email WHERE id1 = 8 OR id2 = 8 ORDER BY mail_date DESC 
url   | id1 | id2
bbb   | 8   | 4
aaa   | 8   | 2
bbb   | 4   | 8
aaa   | 2   | 8
url   | id1 | id2
aaa   | 8   | 2
bbb   | 8   | 4
aaa   | 2   | 8
bbb   | 4   | 8
url   | id1 | id2
aaa   | 8   | 2 //AUG 2016
bbb   | 8   | 4 //JUL 2016
aaa   | 2   | 8 //JUN 2016
bbb   | 4   | 8 //MAY 2016
url   | id1 | id2
bbb   | 8   | 4 //APR 2016
aaa   | 8   | 2 //MAR 2016
bbb   | 4   | 8 //FEB 2016
aaa   | 2   | 8 //JAN 2016
SELECT E1.URL, E1.ID1, E1.ID2
FROM email E1
INNER JOIN (SELECT ID1, ID2, max(mail_date) max_mail_date
            FROM email 
            GROUP BY ID1, ID2) E2
  on E1.ID1 = E2.ID1
 and E1.ID2 = E2.ID2
 and E1.mail_date = E2.max_mail_date
WHERE E1.ID1 = 8 or E1.ID2 = 8
ORDER BY mail_date desc
SELECT E1.URL, E1.ID1, E1.ID2
FROM email E1
WHERE (E1.ID1 = 8 or E1.ID2 = 8)
 AND  EXISTS (SELECT max(E2.mail_date) maxDate
            FROM email E2
            WHERE E1.ID1 = E2.ID1
              and E1.ID2 = E2.ID2
            GROUP BY ID1, ID2
            HAVING E1.mail_date = maxDate)
ORDER BY E1.mail_date desc
select l.* 
from email l
inner join (
  select 
    id1, id2, max(mail_date) as latest 
  from email
    where id1 = 8 OR id2 = 8
  group by id1, id2
) r
  on l.mail_date = r.latest and l.id1 = r.id1 and l.id2 = r.id2
order by mail_date desc
select t1.url, t1.id1, t1.id2, t1.mail_date 
from email t1 
inner join (
    select t2.*, max(t2.mail_date) last_date
    from email t2 
    group by t2.id1, t2.id2 
    order by last_date desc
) t2 on t1.id1=t2.id1 and t1.id2=t2.id2 and t1.mail_date=t2.last_date
where t1.id1=8 or t1.id2=8
SELECT e.url, e.id1, e.id2 
FROM email e
LEFT JOIN email e1
ON e.url = e1.url
  AND e.id1 = e1.id1
  AND e.id2 = e.id2 
  AND e.mail_date > e1.mail_date
WHERE e.id1 = 8 OR e.id2 = 8 
  AND e1.url IS NULL
ORDER BY e.mail_date DESC;