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语法,“*”之后是什么意思? 任何人都可以向我解释这个问题或告诉我在哪里可以开始?
答案 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是传递(或绑定等)的参数,具体取决于调用它的语言。
选择*表示所有列。所以来自一个表的所有列,以及来自另一个表的一列