这个SQL查询语法是什么意思?

时间:2015-10-26 04:33:26

标签: mysql sql

SELECT b.*,
( select a.USER_NAME 
  from A.db.USER a 
  where a.USER_ID=b.Booking_Inspector
) as USER_NAME 
FROM A.dbo.Booking b 
where b.Booking_Inspector=? and b.confirm=1

从这个sql语法,“*”之后是什么意思? 任何人都可以向我解释这个问题或告诉我在哪里可以开始?

3 个答案:

答案 0 :(得分:1)

在这种情况下,item.title是将返回列(select a.USER_NAME from A.db.USER a where a.USER_ID=b.Booking_Inspector)的子查询。因此,此查询从子查询中选择a.USER_NAME(b。*)和列b中的所有内容。就像你在select查询中的列名之间使用逗号一样,它是相同的。

答案 1 :(得分:1)

从b中选择所有列,并将该子查询中的另一列选为USER_NAME

( select a.USER_NAME 
  from A.db.USER a 
  where a.USER_ID=b.Booking_Inspector
) as USER_NAME 

上面的全部内容为1列

SELECT b.*, [USER_NAME]
FROM A.dbo.Booking b 
where b.Booking_Inspector=? and b.confirm=1

答案 2 :(得分:1)

这意味着表Booking中的所有列以及最右侧(每行的最后一列)都会引入与用户相关的表user_name中的user列.user_id匹配booking.booking_inspector。这样,Booking.confirm为1,并且使用传递的参数填充Booking_inspector。

因此它限制输出的行确认为1,而Booking_Inspector是传递(或绑定等)的参数,具体取决于调用它的语言。

选择*表示所有列。所以来自一个表的所有列,以及来自另一个表的一列