gpt4 book ai didi

mysql - ON 子句中的条件条件

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

我正在尝试在 LEFT JOIN 的 ON 子句中应用条件条件。我想要实现的目标有点像这样:

伪代码

SELECT * FROM item AS i
LEFT JOIN sales AS s ON i.sku = s.item_no
AND (some condition)
AND (
IF (s.type = 0 AND s.code = 'me')
ELSEIF (s.type = 1 AND s.code = 'my-group')
ELSEIF (s.type = 2)
)

我希望查询返回该行,如果它匹配任何一个条件(编辑:如果它匹配一个,应该省略同一项目的其余部分)。

示例数据

销售

item_no | type | code     | price
1 0 me 10
1 1 my-group 12
1 2 14
2 1 my-group 20
2 2 22
3 2 30
4 0 not-me 40

我希望返回查询

item_no | type | code     | price
1 0 me 10
2 1 my-group 20
3 2 30

编辑:销售表用于为个人用户、用户组和/或所有用户应用特价。
如果 type = 0,则代码包含用户名。 (对于单个用户)
如果 type = 1,则代码包含用户组。 (对于群组中的用户)
如果 type = 2,则代码包含空字符串(对于所有用户)。

最佳答案

使用以下 SQL(假设 sales 表像 yii 中一样有一个唯一的 id 字段):

SELECT * FROM item AS i
LEFT JOIN sales AS s ON i.sku = s.item_no
AND id = (
SELECT id FROM sales
WHERE item_no = i.sku
AND (type = 0 AND code = 'me' OR
type = 1 AND code = 'my-group' OR
type = 2)
ORDER BY type
LIMIT 1
)

关于mysql - ON 子句中的条件条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482868/

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