嘿那里我试图弄清楚这个的SQL代码:
假设我有4列:
ID NAME EMAIL
1 Mike mike@mike.com
2 Bob bob@bob.com
3 Chris
4 Matt
我想从电子邮件中选择最后一个非空的条目,所以在这个例子中它会寻找bob@bob.com 我试过Coalesce,但这似乎给了我列中的值,但不是最后输入的值。 MAX我认为仅用于ID。有什么想法吗?
答案 0 :(得分:0)
通过加入仅返回MAX(ID)
的子查询。这在MySQL中是不必要的,但是如果它们不在GROUP BY
子句中,许多其他RDBMS也不允许你包括聚合以外的列。
SELECT yourtable.*
FROM
yourtable
JOIN (SELECT MAX(ID) AS ID FROM yourtable WHERE EMAIL IS NOT NULL) maxid ON yourtable.ID = maxid.ID
注意:在任何一种情况下,只有当ID
是一个自动递增列并且您没有通过插入已删除前一个ID的行来插入它时,这才能可靠地工作。