gpt4 book ai didi

mysql - 从一个表或另一个表中选择列

转载 作者:行者123 更新时间:2023-11-29 14:03:21 25 4
gpt4 key购买 nike

假设我有两个表:

CREATE TABLE state (
id TINYINT,
state CHAR(2),
PRIMARY KEY (id)
);

CREATE TABLE valid_state (
id INT,
state CHAR(2), # or stateId TINYINT or whatever
productId INT
);

如果产品只能在 CA 销售,则其 valid_state 中只有一个条目。如果它可以在所有州出售,则 valid_state 中不会有任何条目。如果在任何状态下都无法销售,则需要在未定义的产品表中禁用该产品。

我的问题是:如何选择给定产品的所有有效状态?理想情况下,我想从 valid_state 中进行选择,看看它是否为空,如果是,则返回所有状态。不幸的是,我不知道该怎么做。

有什么想法吗?

(另外,fwiw,我没有设计架构,因此建议我更改它并没有多大帮助)

最佳答案

实现此目的的一种方法是使用 UNIONNOT EXISTS:

SELECT DISTINCT S.Id, 
S.State
FROM State S
JOIN valid_state V ON S.State = V.State AND V.ProductId = @ProductId
UNION
SELECT DISTINCT S.Id,
S.State
FROM State S
WHERE NOT EXISTS (SELECT * FROM valid_state WHERE ProductId = @ProductId)

这是示例 Fiddle .

祝你好运。

关于mysql - 从一个表或另一个表中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742651/

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