什么是m . 和r . 意思?它是通过第一个字母引用表名吗?还有其他命令,如dayname
我有 table ,房间,员工, Session 和参与者 .
select dayname(m.date), count(*) from meeting m, room r where m.room_id=r.room_id group by weekday(m.date) order by weekday(m.date);
感谢您抽出宝贵时间来回答我
员工:----------- ---------- ------ ----- --------- ------- |领域|输入|空|钥匙|默认|额外的| ----------- ---------- ------ ----- --------- ------- staff_id | int(11)|不| PRI | NULL | | |资历| int(11)|是的| | NULL | | |姓氏| char(30)|是的| | NULL | | |名字| char(30)|是的| | NULL | | ----------- ---------- ------ ----- --------- -------
Session :------------ ---------- ------ ----- --------- ------ - |领域|输入|空|钥匙|默认|额外的| ------------ ---------- ------ ----- --------- ------- | meeting_id | int(11)|不| PRI | NULL | | | room_id | int(11)|是| MUL | NULL | | |名字| tinytext |是的| | NULL | | |日期|日期|是的| | NULL | | ------------ ---------- ------ ----- --------- -------
参与者:------------ --------- ------ ----- --------- ------- |领域|输入|空|钥匙|默认|额外的| ------------ --------- ------ ----- --------- ------- meeting_id | int(11)|是| MUL | NULL | | | staff_id | int(11)|是| MUL | NULL | | ------------ --------- ------ ----- --------- -------
房间:--------- ---------- ------ ----- --------- -------领域|输入|空|钥匙|默认|额外的| --------- ---------- ------ ----- --------- ------- | room_id | int(11)|不| PRI | NULL | | |名字| char(50)|是的| | NULL | | --------- ---------- ------ ----- --------- -------
2 回答
m
和r
是表名meeting
和room
的别名 . 在这种情况下,通过这些名称引用它们在语法上很方便,而不是写出整个表名 .SELECT * FROM my_table t WHERE t.my_column_name = 123;
在上面的示例中,
t
是指定my_table
的便捷方式 . 然后,您可以通过指定t.my_column_name
来访问列(属性) .有关一般说明,请参阅此
http://en.wikipedia.org/wiki/Alias_(SQL)
关于
dayname
,我很想说这是一个用户定义的SQL函数,位于代码的其他地方 . 据我所知,这不是保留 . 我建议你浏览一下你所拥有的SQL的其余部分,看看你是否能找到它的定义 .是的,它们是表名的别名 . 您在“来自”部分自己定义了它们:
在这里,您将
m
定义为meeting
表的别名,将r
定义为room
. 如果你这样做,这可能会特别有用两次加入房间表:然后你可以给两个实例提供不同的别名 .