我有2个表,这些表与共享列customer_id
相关:
customer
rental
我需要在rental_id
表格中显示last_update
和rental
。
此外,active
表中的customer
列active
为false
我搜索了多个网站,以及Stack Overflow上的几个问题,这是我得到的最接近的网站:
SELECT rental_id, last_update, active
FROM rental
WHERE customer_id IN
(SELECT customer_id
FROM customer
WHERE active = false);
提前感谢您的帮助。
编辑:我必须使用子查询,因为这是一个学校项目,因此内部联接答案无济于事。遗憾。
答案 0 :(得分:0)
尝试这样的查询。它使用INNER JOIN而不是subselect
SELECT
r.rental_id,
r.last_update,
c.active
FROM rental r
INNER JOIN
customer c ON c.cusomer_id = r.customer_id
WHERE
c.active = FALSE;
答案 1 :(得分:0)
由于子查询仅返回active = false
的客户,因此无需从表中获取该列,您只需将其硬编码到SELECT
列表中即可。
SELECT rental_id, last_update, false AS active
FROM rental
WHERE customer_id IN (
SELECT customer_id
FROM customer
WHERE active = false)
如果没有FROM
或JOIN
表之一,就无法从表中获取非常量数据。
WHERE c in (SELECT ...)
方面往往很差。我试图不惜一切代价避免它们,我认为你的老师在禁止它们时被误导了。