2016-09-26 9 views
-1
REPORTER  PARTNER NET_WEIGHT YEAR  COMMODITY 

'Egypt',  'Canada',  '5', '2010', 'wheat' 
'Germany',  'UK',  '1', '2011', 'wheat' 
'Mexico', 'France',  '5', '2011', 'wheat' 

これは、私たちはそのNET_WEIGHTできINT存在しないテーブルに存在しないデータを取得したい、そこから1つの手順を作成したい私のテーブルであるは、レコード整数配列は、MySQLに存在していないかどうかを確認する方法を

ヌルと16 | |ヌル私はそのNET_WEIGHT表で発見されていない確認する必要があり、それに応じて、我々が得るべきであるNET_WEIGHT |ヌル私はそれが12返す必要があり、その後

「1,12,16」として入力を渡すときに、このように私はしたいですデータはどうすればいいか教えてください。

+0

は実際に私は、そのIDテーブルに存在しない整数アレイ1が発見されたとして、私は入力を渡していますが、12と16、それがわかっていないが、のような出力を与える必要があります返すようにしたいです12 |ヌルと2番目の行16 | NULL @Carlos Fdev –

+0

select *テーブル名からNET_WEIGHT NOT IN(1,12,16); – JYoThI

+0

これは好きではない私はレコードを必要としないテーブルに存在するように私は12と16が存在しないExist thenは私が12を得なければならない| null 16 | nullあなたは何をしようとしているのですか? @JYoThI –

答えて

1
drop procedure if exists `tokensise`; 
delimiter // 
CREATE DEFINER=`root`@`localhost` procedure `tokensise`(`instring` varchar(255)) 
    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT '' 
begin 
declare tempstring varchar(100); 
declare outstring varchar(100); 
declare checkit int; 
set tempstring = ltrim(rtrim(instring)); 
set checkit = 0; 
drop table if exists occursresults; 
create table occursresults(letter char(1), occurs int); 
looper: while tempstring is not null and instr(tempstring,',') > 0 do 
     set outstring = substr(tempstring,1,instr(tempstring, ',')); 
     set tempstring = ltrim(rtrim(replace(tempstring,outstring,''))); 
     set outstring = replace(outstring,',',''); 
     set checkit = checkit + 1; 
     insert into occursresults 
     select outstring, t.NET_WEIGHT 
        from (select outstring os) d left join t on t.NET_WEIGHT = d.os; 
end while; 
    set outstring = tempstring; 
    set tempstring = ltrim(rtrim(replace(tempstring,outstring,''))); 
    set outstring = replace(outstring,',',''); 
    set checkit = checkit + 1; 
    insert into occursresults 
     select outstring, t.NET_WEIGHT 
        from (select outstring os) d left join t on t.NET_WEIGHT = d.os; 

end // 
delimiter ; 

結果

MariaDB [sandbox]> call tokensise('1,2,5'); 
Query OK, 2 rows affected (0.38 sec) 

MariaDB [sandbox]> select * from occursresults; 
+--------+--------+ 
| letter | occurs | 
+--------+--------+ 
| 1  |  1 | 
| 2  | NULL | 
| 5  |  5 | 
| 5  |  5 | 
+--------+--------+ 
4 rows in set (0.00 sec) 
+0

そのエラーが表示されていますエラーコード:1146.テーブル 'Parabola.t'は存在しません –

+0

テーブルが呼び出されたものを選択ステートメントに置き換えます。 –

0

私は2つのテーブルを使用します。私はチームが結果テーブルに存在するかどうかをチェックするサッカーデータベースで使用しますが、統計テーブルはありません。以下のコードは、hometeamがteam.statsとして存在しない結果のすべての行を表示します。

SELECT * 
FROM results 
WHERE hometeam NOT IN (SELECT team FROM stats) 
+0

テーブルから別のテーブルにアクセスする必要はありません –

関連する問題