我有兩個表:與子條件加入表
create table t1(
id int unsigned not null auto_increment,
group varchar(3) not null,
number int unsigned zerofill,
used enum('YES','NO') default);
id group number used
1 '110' 00001 'YES'
2 '110' 00002 'YES'
3 '110' 00003 'YES'
4 '210' 00001 'YES'
5 '210' 00002 'YES'
6 '210' 00003 'YES'
7 '310' 00001 'YES'
create table t2(
id int unsigned not null auto_increment,
number varchar(13) default null);
id number
1 '110-00001'
2 '110-00002'
3 '210-00002'
4 '310-00001'
我的第一個目標是找到T1的所有記錄,並非T2使用:
查詢結果:
id group number used
3 '110' 00003 'YES'
4 '210' 00001 'YES'
6 '210' 00003 'YES'
而我的第二個目標是將列設置爲'NO':
id group number used
3 '110' 00003 'NO'
4 '210' 00001 'NO'
6 '210' 00003 'NO'
我曾嘗試使用這樣的查詢:
select * from t1
left outer join t2
on t1.number = cast(substring(t2.number,8,5) as int)
where t2.id is null;
但MySQL的說:
您的SQL語法錯誤;檢查手冊中 對應於你的MySQL服務器版本正確的語法使用 接近「INT),其中tblpeserta.id爲空
是有我的問題的一個更好的查詢?
它不應該是'CAST(SUBSTRING(t2.num 8,5)AS UNSIGNED)'?其實,我不明白爲什麼你需要投在這裏。 – raina77ow
因爲在T1號是在T2中的INT ZEROFILL和數量爲varchar,所以我需要將其轉換爲int所以t1.number和t2.number可以比較 –