一連のデータの中に最大 2 つのデータが含まれるレコードの数を求めます。 ありがとうございます
元のデータベース テーブルには次のような情報が格納されています
l1、l2、を選択することで取得できます。テーブルの l3、l4、l5 以下のデータ
1 2 3 4 5
1 3 8 14 16
16 18 22 24 26
15 14 23 28 30
26 28 30 31 33
次に、これら 5 つのレコードから次の制限に従って出力したいとします。つまり、 $arr=array (1,8,14,20,22,24,26,29, 30, 31,32,33), $arr で出力を見つけます。 最大 2 つの数字を持つレコードは何ですか? もちろん、上記で取得したレコードから選択できます。select の where 条件で制限できると良いでしょう。 。前もって感謝します! ~~~
-----解決策---------------------------- -
真ん中の from の後 Union all の文字列をテーブルに置き換えます
SELECT * FROM(SELECT *,(if(find_in_set(a, '1,8,14,20,22,24,26,29,30,31,32,33'), 1, 0) + if(find_in_set( b, '1,8,14,20,22,24,26,29,30,31,32,33'), 1, 0) + if(find_in_set(c, '1,8,14,20,22) ,24,26,29,30,31,32,33'), 1, 0) + if(find_in_set(d, '1,8,14,20,22,24,26,29,30,31,32 ,33'), 1, 0) + if(find_in_set(e, '1,8,14,20,22,24,26,29,30,31,32,33'), 1, 0) ) cnt FROM (SELECT 1 a、2 b、3 c、4 d、5 e すべてを結合 SELECT 1、3、8、14、16 すべてを結合 SELECT 16、18、22、24、26 すべてを結合 SELECT 15、14、23、28、30 すべてを結合 SELECT 26、28、30、31、33) t) s WHERE cnt<font color="#e78608">------解決策---------</font><br>
mysql_connect(); mysql_select_db('テスト'); mysql_query('DROP TABLE IF EXISTS tset'); mysql_query(' 存在しない場合にテーブルを作成するテスト ( id int(11) NOT NULL AUTO_INCREMENT、 l1 varchar(2) NULL、 l2 varchar(2) NULL、 l3 varchar(2) NULL、 l4 varchar(2) NULL、 l5 varchar(2) NULL、 主キー (`id`) ) エンジン=マイサム '); mysql_query('TRUNCATE TABLE テスト'); mysql_query("テスト (l1、l2、l3、l4、l5) 値に挿入 ('1'、'2'、'3'、'4'、'5')、 ('1'、'3'、'8'、'14'、'16')、 ('16'、'18'、'22'、'24'、'26')、 ('15'、'16'、'23'、'28'、'3')、 ('26'、'28'、'30'、'31'、'33') "); $arr = 配列(1,8,14,20,21,24,26,29,30,31,32,33); $s = "select '" .join("' as ch Union all select '", $arr) ; $sql = "cnt、a.* として count(*) を選択 (テストから p として id, concat(l1,',',l2,',',l3,',',l4,',',l5) を選択) 左結合 ($s) b find_in_set(b.ch, a.p) では a.id HAVING cnt