第一次海报,长时间的读者。在过去的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太陌生了!提前谢谢。
发布于 2013-12-11 05:45:38
Case语句的工作方式与您尝试的方式不同,它们主要用于选择器,请参见http://dev.mysql.com/doc/refman/5.0/en/case.html或staticsan的答案。您可以在WHERE子句中使用它们,但通常应该考虑数据转换。
MySQL确实有IF语句的概念:可以嵌套的if。例如
1 = IF(b2c_products.productType = 1, IF(b2c_sellers.seller_country = '$country', 1, 0), 0)作为另一种选择,您可以使用嵌套的简单子句和子句来实现您所追求的目标,这些子句也允许您使用索引。
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注入。
发布于 2013-12-11 05:37:06
实际上,不,你想做的事情远没有明显的结果。
CASE通常用于SELECT语句的字段( SELECT和FROM之间),以更改返回的数据。一个简单的例子可能是:
SELECT userid, CASE WHEN disabled = 1 THEN 'Disabled' ELSE '' END AS disabled FROM users;我认为CASE的工作方式是在每一行输出上运行。
https://stackoverflow.com/questions/20511231
复制相似问题