我有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语句。
请帮帮我。
答案 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_*
函数,因为它们已被折旧。
希望这有助于