求在一組資料內至多包含2個資料的記錄個數,謝謝

來源:互聯網
上載者:User
求在一組資料內至多包含2個資料的記錄個數,多謝
原資料庫table儲存類似於下面的資訊有好多記錄
通過select l1,l2,l3,l4,l5 from table 可以得到如下資料

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替換為你的table

SQL code
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 union allSELECT 1, 3, 8, 14, 16 union allSELECT 16, 18, 22, 24, 26 union allSELECT 15, 14, 23, 28, 30 union allSELECT 26, 28, 30, 31, 33) t) s WHERE cnt<=2
------解決方案--------------------
PHP code
mysql_connect();mysql_select_db('test');mysql_query('DROP TABLE IF EXISTS tset');mysql_query('CREATE TABLE IF NOT EXISTS test (  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,  PRIMARY KEY (`id`)) ENGINE=MyISAM');mysql_query('TRUNCATE TABLE test');mysql_query("insert into test (l1, l2, l3, l4, l5) values('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 = array(1,8,14,20,21,24,26,29,30,31,32,33);$s = "select '" .join("' as ch union all select '", $arr) . "'";$sql = "select count(*) as cnt, a.* from   (select id, concat(l1,',',l2,',',l3,',',l4,',',l5) as p from test) a  left join   ($s) b  on find_in_set(b.ch, a.p) group by a.id HAVING cnt<3";$rs = mysql_query($sql) or die(mysql_error());while($r = mysql_fetch_assoc($rs)) {  echo join(', ', $r), PHP_EOL;} 
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.