1

我有 2 个选择语句。

1- select sm.id, IFNULL(sm.unit_price,0) as unit_price       
   from crm_stock_manager sm
   left join crm_purchase_order_items poi on poi.id = sm.purchase_order_item_id and  poi.is_del = 0
   left join crm_products p on poi.product_id = p.id and p.is_del = 0
   where sm.is_del = 0 and IFNULL(sm.unit_price, '') != '' and p.id = 253 order by sm.created_on;

2- select 0 as id ,price as unit_price from crm_products where id = 253  and is_del=0;

如果第一个选择语句返回一个空结果,那么我想运行第二个选择语句。

请帮我。

4

3 回答 3

5

这似乎从我刚刚进行的快速测试中起作用,并且避免了两次检查 x=1 是否存在的需要。

SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1

UNION ALL

SELECT *
FROM mytable
WHERE 
FOUND_ROWS() = 0 AND x = 2;

另一种方法是使用 EXISTS 或 NOT EXISTS 的子查询

SELECT column1 FROM t1 WHERE NOT EXISTS (SELECT * FROM t2);
于 2013-02-27T05:40:43.773 回答
1

如果需要选择crm_products.priceif srm_stock_manager.unit_priceis NULL,则可以使用COALESCE并且不需要 2 次查询。您可以按如下方式更改SELECT语句的第一部分,并根据需要更改其他部分以获得所需的结果。

SELECT sm.id, COALESCE(sm.unit_price, p.price) unit_price FROM...

p.price如果sm.unit_price为 NULL,则返回值。

此外,请参阅 mysql doc

于 2013-02-27T06:03:51.937 回答
1

你可以这样做

$query1 = mysql_query("YOUR QUERY");
$row_count = mysql_num_rows($query1);
if($row_count==0) {
 $query1 = mysql_query("Your Second Query");
}

请记住不要使用mysql_*函数,因为它们已折旧。

希望这可以帮助

于 2013-02-27T06:39:53.097 回答