我有這樣的代碼。爲什麼find_in_set有效,但IN子句
DELIMITER $$
CREATE PROCEDURE `sp_deleteOrderData`(orderid BIGINT(11))
BEGIN
DECLARE shipmentnumbers VARCHAR(1000);
DECLARE cartonid VARCHAR(1000);
SELECT GROUP_CONCAT(a_shipmentid) FROM t_shipment WHERE a_orderid = orderid INTO shipmentnumbers;
SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE a_shipmentid IN (shipmentnumbers) INTO cartonid;
SELECT shipmentnumbers;
/*SELECT cartonid; */
END$$
DELIMITER ;
這裏shipmentnumbers回報100020,100021,100022
理想cartonid應返回11,12,13
但我只得到11 cartonid。
但是當我使用下面的代碼我得到正確的結果。
SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE FIND_IN_SET(a_shipmentid, shipmentnumbers) INTO cartonid;
我想知道IN和FIND_IN_SET究竟有什麼區別,我決定使用什麼。
這個怎麼樣 'SELECT FIND_IN_SET(「abc」,'abc','abd','asr','asd')'?這將工作正確嗎? – Unbreakable 2017-02-09 17:38:57