gpt4 book ai didi

mysql - sql 从 'EXISTS' 语句中获取列

转载 作者:行者123 更新时间:2023-11-29 06:13:12 26 4
gpt4 key购买 nike

我有以下sql查询

SELECT Store.*
FROM Store
WHERE EXISTS (
SELECT Contest.StoreID .....)
OR EXISTS (
SELECT Discount.StoreID .....)

我的问题是我想在结果中包含来自 Contest 和 Discount 数组的一些列。如果我在 FROM 上加入它们,它可以工作,但是有没有办法从 EXISTS 获取值?像这样

SELECT Store.*, t1.something, t2.somethingElse
FROM Store
WHERE EXISTS (
SELECT Contest.StoreID .....) t1
OR EXISTS (
SELECT Discount.StoreID .....) t2

最佳答案

不行WHERE子句是不可能select的,想一想,这个子句是为了过滤。

有两种方法可以从不同的表中一起选择数据,子查询连接

这是一个 JOIN 示例:

SELECT s.*, t1.something, t2.somethingElse
FROM Store s
LEFT OUTER JOIN Contest t1 ON(...)
LEFT OUTER JOIN Discount t2 ON(...)
WHERE t1.<column> is not null OR t2.<column> is not null

这将执行与您使用 EXISTS() 进行的查询相同的操作,并且可能具有相似的性能。

我们也可以做一个相关的子查询:

SELECT * FROM (
SELECT s.*,
(SELECT t1.something FROM contest t1 WHERE t1.<col> = s.<col>) as col1,
(SELECT t1.something FROM contest t1 WHERE t1.<col> = s.<col>) as col2,
FROM Store s) t
WHERE t.col1 is not null or t.col2 is not null

关于mysql - sql 从 'EXISTS' 语句中获取列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37317710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com