首页 > 试题广场 >

有两张表,如下图所示 表A(仅列出部分数据作参考) &n

[不定项选择题]
有两张表,如下图所示
表A(仅列出部分数据作参考)
Order_id     User_id    Add_time
11701245001 10000    1498882474
11701245002 10001    1498882475
表B:(仅列出部分数据作参考)
id     Order_id     goods_id price
1   11701245001    1001     10
2   11701245001    1002     20
3   11701245002    1001     10
问:用SQL查询 购买过goods_id 为1001的用户user_id()
  • select user_id from A where order_id = (select order_id from B where goods_id = '1001')
  • select a.user_id from A a,B b where a.order_id=b.order_id and b.goods_id='1001'
  • select user_id from A where order_id in (select order_id from B where goods_id = '1001')
  • Select A.user_id from A left join B on A.order_id=B.order_id where B.goods_id='1001'
在子表元素大于1时, 不能用= 要用in in(子表)
发表于 2019-09-08 10:36:34 回复(0)
A错误在于多个返回查询值不能用=,要用in
发表于 2020-03-06 23:52:02 回复(0)
对于D选项,在大多数的关系型数据库里面,如果在使用left join的同时,又把附表的条件放在where子句中,而不是 on子句中时,实际的执行效果相当于inner join .
发表于 2020-04-16 09:15:52 回复(10)
其实买同一个商品,一个用户可能买多个,只是订单号不同而已,所以查出来购买过goods_id 为1001的用户user_id其实可能有重复的,BCD选项应该都加上distinct,同意的小伙伴顶我
发表于 2021-08-19 14:29:18 回复(0)
D选项left join 是左连接, 那他就包含表A中所有user_id, 我认为换为inner join 是对的, left join 不对, 请大神解答
发表于 2020-02-25 11:54:31 回复(5)
<p>B是92语法,D是99语法</p>
发表于 2020-08-05 21:22:10 回复(0)
左连接,返回左边表中所有记录和右边表中链接字段相等的记录 右连接, 等值连接,两边连接字段相等的行 A left join B on A. =B.
编辑于 2020-04-24 22:36:43 回复(0)
有大佬解答下为什么a错b对吗?感谢啦~
发表于 2019-09-05 16:56:40 回复(3)
A 错误。 子查询中得出多个结果,故不能用=(),应该使用in()
B 正确。多表联合查询,B.外键连接A.主键
C 正确。正确的子查询语句,in()表示从多个中匹配一个。
D 正确。 左连接查询时,左表A不变,粗心一看以为是错误的,但是连接条件不是ON关键字,题目使用了where关键字,所以结果正确。
发表于 2021-11-05 11:24:02 回复(2)
B选项为什么能从A和B里宣userid,没看到使用JOIN呀…这是什么写法…表示看不懂
发表于 2020-09-26 00:42:57 回复(5)
b选项不用as吗
发表于 2020-08-19 14:09:05 回复(1)
A对于返回多值的要用In
发表于 2021-12-12 15:22:19 回复(0)
D不能光看到left,就不选
发表于 2020-04-19 15:12:01 回复(2)
当子表中元素大于1的时候,不能用=
编辑于 2024-02-27 01:48:54 回复(0)
返回多值要用in
发表于 2022-12-07 06:19:50 回复(0)
返回的子表结果大于1  不能用= 要用in
发表于 2022-09-27 23:45:37 回复(0)
select user_id 
    from A 
    where order_id = (select order_id from B where goods_id = '1001')
(select order_id from B where goods_id = '1001') 会返回两个值,这属于单列多值,
不能用
where order_id =

发表于 2022-06-28 23:11:48 回复(0)
纠结老久,发现好多答案没问题,最后才发现是多选题
发表于 2022-04-05 12:21:31 回复(0)
cwe头像 cwe
对于D选项,在大多数的关系型数据库里面,如果在使用left join的同时,又把附表的条件放在where子句中,而不是 on子句中时,实际的执行效果相当于inner join .
发表于 2022-03-09 15:57:43 回复(0)
Rwx头像 Rwx
说不对的自己执行下啊
发表于 2022-01-13 15:34:54 回复(0)