私はこのようなコードを持っています。
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しか得られません。
しかし、以下のコードを使用すると、適切な結果が得られます。
SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE FIND_IN_SET( a_shipmentid, shipmentnumbers ) INTO cartonid;
INとFIND_IN_SETの違いを正確に知りたいのですが、何を使用するかを決定します。