如果select查询返回空结果,请在mysql中运行另一个select查询

时间:2013-02-27 04:46:01

标签: mysql

我有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;

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

请帮帮我。

3 个答案:

答案 0 :(得分:4)

这似乎是我刚刚进行的快速测试,并且无需检查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);

答案 1 :(得分:1)

如果crm_products.price如果srm_stock_manager.unit_price为NULL,则需要选择COALESCE,您可以使用SELECT而不需要2次查询。您可以按如下方式更改SELECT sm.id, COALESCE(sm.unit_price, p.price) unit_price FROM... 语句的第一部分,并根据需要更改其他部分以获得所需的结果。

p.price

如果sm.unit_price为NULL,则返回{{1}}值。

此外,请参阅mysql doc

答案 2 :(得分:1)

你可以这样做

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

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

希望这有助于