首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择:在什么时候或者其他什么时候?

MySQL选择:在什么时候或者其他什么时候?
EN

Stack Overflow用户
提问于 2013-12-11 05:29:25
回答 2查看 237关注 0票数 0

第一次海报,长时间的读者。在过去的6-8个月里,我一直在自学自己的代码,我认为我在PHP/Javascript/MySQL堆栈上的表现相当不错。我非常喜欢Stack所建立的社区,因为它确实有助于与更好地理解事物的人分享问题。

因此,我的问题可能比较简单,但我不知道如何在这里使用Case When...Then。(或者是否正确使用!)基本上,我想在where子句中说的是:如果此列= 1,那么也要处理这个条件。类似于:

代码语言:javascript
复制
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太陌生了!提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-11 05:45:38

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

MySQL确实有IF语句的概念:可以嵌套的if。例如

代码语言:javascript
复制
1 = IF(b2c_products.productType = 1, IF(b2c_sellers.seller_country = '$country', 1, 0), 0)

作为另一种选择,您可以使用嵌套的简单子句和子句来实现您所追求的目标,这些子句也允许您使用索引。

代码语言:javascript
复制
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注入。

票数 1
EN

Stack Overflow用户

发布于 2013-12-11 05:37:06

实际上,不,你想做的事情远没有明显的结果。

CASE通常用于SELECT语句的字段( SELECTFROM之间),以更改返回的数据。一个简单的例子可能是:

代码语言:javascript
复制
SELECT userid, CASE WHEN disabled = 1 THEN 'Disabled' ELSE '' END AS disabled FROM users;

我认为CASE的工作方式是在每一行输出上运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20511231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档