我具有以下表格结构(表格名称通知)
_id | NotificationFor | DateToNotify | isExtraOrdinary |
NotificationData | TypeNotification | FriendsName |
RadioType | PrimaryId
我对称为NotificationsCron的表具有完全相同的架构,但是有时第二个表在Notifications表中具有完全相同的记录。我使用以下查询来获取记录:
SELECT *
FROM (SELECT *
FROM Notifications
WHERE TypeNotification <> 'Event' AND RadioType <> '3'
UNION
SELECT *
FROM NotificationsCron
WHERE TypeNotification <> 'Event' AND RadioType <> '3'
) T
ORDER BY SUBSTR(DATE('NOW'), 0) > SUBSTR(DateToNotify, 0),
SUBSTR(DateToNotify, 0);
但是,当我使用上面的方法时,我得到了重复项,我在互联网上经历了类似的问题,发现UNION ALL返回了重复项,而UNION没有。在我的情况下这不起作用,我遇到的第二个重点是指定每个列名而不是SELECT *我想知道这有什么区别-有兴趣了解它在基本级别上的作用吗?
这是NotificationsCron表的图像:
这是通知表中的一张图片:
我遇到的第二个重点是指定每个列名而不是SELECT *我想知道这有何不同
后来,有人在表中添加了一个字段。使用“ SELECT *”的任何查询都会突然获得一个新字段。有时这是正确的。有时这会产生意想不到的结果。在大多数情况下,始终显式命名列而不是使用通配符是一种更好的做法。
其次,如果您实际上并不需要所有列,则可以通过限制返回的列来提高性能。更进一步,在某些数据库中,INDEX可以满足查询而无需前往表,因此,如果使用列列表,则可以进行优化。使用SELECT *不能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句