gpt4 book ai didi

MySQL 选择 : Case When Or Something Else?

转载 作者:行者123 更新时间:2023-11-29 13:23:09 24 4
gpt4 key购买 nike

第一次发帖,长期读者。在过去的 6-8 个月里,我一直在自学代码,我认为我在 PHP/Javascript/MySQL 堆栈方面已经相当不错了。我非常喜欢 Stack 建立的社区,因为它确实有助于与更了解事物的人分享问题。

所以我的问题可能相对简单,但我不确定如何使用 Case When...Then 这里。 (或者这是否正确使用!)。基本上我想在 where 子句中说的是:如果此列 = 1,则也处理此条件。类似于:

SELECT product_name
FROM b2c_products, b2c_sellers
WHERE b2c_products.productId = b2c_sellers.product_Id AND CASE WHEN b2c_products.productType = 1 THEN b2c_sellers.seller_country = '$country' END;

我希望大家能够理解这个想法 - 我知道这是一个简单的问题,我只是对 SQL 很陌生!提前非常感谢。

最佳答案

Case 语句的工作方式与您尝试的方式不同,它们主要用于选择器,请参阅 http://dev.mysql.com/doc/refman/5.0/en/case.html或 staticsan 的答案。您可以在 WHERE 子句中使用它们,但通常应考虑进行数据转换。

MySQL确实有IF语句的概念:http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if可以嵌套。例如

1 = IF(b2c_products.productType = 1, IF(b2c_sellers.seller_country = '$country', 1, 0), 0)

作为替代方案,您可以通过嵌套简单的 AND 子句来实现您想要的效果,这也将允许您使用索引,例如

SELECT product_name
FROM b2c_products, b2c_sellers
WHERE ((b2c_products.productType = 1 AND b2c_sellers.seller_country = '$country')
OR b2c_products.productType <> 1);

顺便说一句,请确保转义“$country”以避免 SQL 注入(inject)。

关于MySQL 选择 : Case When Or Something Else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20511231/

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