是否有可能加入不在表中的字段,而是从它派生?sql:如何在计算结果的字段上加入
例如,如果我有一个表将日历日期映射到数据,另一个映射星期几(0-6)到数据。如何将日历日期表加入星期几表中而不在前者中添加“星期几”字段?
是否有可能加入不在表中的字段,而是从它派生?sql:如何在计算结果的字段上加入
例如,如果我有一个表将日历日期映射到数据,另一个映射星期几(0-6)到数据。如何将日历日期表加入星期几表中而不在前者中添加“星期几”字段?
尝试这样:
select
a.one+a.two, b.three
from TableA a
inner join TableB b on a.one+a.two=b.three
只是把你计算的联接,索引的使用是不可能的,但。你don'y说你的数据库,但如果你有一些命令取日期的星期(),您可以加入对:
inner join TableB on weekday(a.EventDate)=b.Weekday
我使用MySQL与innodb。绝对希望能够使用这些索引 - 我应该只在其他表中添加星期几字段吗? – 2012-03-19 21:24:56
如果您只加入一个有7行的表格(对于一周中的某几天),那么索引将不会被使用。有了这么几行,只需扫描整个表格就可以更快更简单。但是,如果您尝试仅显示特定一周中的行(如星期二),则会注意到缺少索引。 – 2012-03-20 12:42:10
如果您正在使用SQL Server,你可以使用DATEPART函数为您提供一周中的哪一天(0-7)特定的日期。您应该能够使用此功能,您的周数的一天加盟日期列:
select * from
t1 inner join t2 on
DATEPART(weekday,t1.dateColumnName) = t2.dayOfTheWeek
一个疑难杂症,但 - 这可能会改变依赖于一周中的一天设置为在SQL Server中的第一个设置。
当然,为什么不呢。
select foo.dayofweek, bar.date from foo
join bar on datepart(dw, bar.date) = foo.dayofweek
不要以为这会影响你的索引,尽管如其他人所说。
你还没有说过你正在使用哪种SQL - Mysql,Postgresql,oracle,SQL Server等。 – Bridge 2012-03-19 19:16:27
它是mysql。虽然看到我对KM的回答的评论。 – 2012-03-19 21:25:28