我有2個表:包含在MySQL而不LIKE
- 表1 - 纈氨酸1(例如:
TOP
) - 表2 - 纈氨酸2(例如:
TOP,TOP_12,TOP_14
[注:這是一個字符串])
Java有Contains
方法來檢查的Val 1
值在Val 2
,我想知道如何編寫一個查詢就知道Val 1
是Val 2
與否。我不想用LIKE
因爲Val 2
(字符串)包含TOP
所有的值,以便與LIKE
查詢計數爲3
我有2個表:包含在MySQL而不LIKE
TOP
)TOP,TOP_12,TOP_14
[注:這是一個字符串])Java有Contains
方法來檢查的Val 1
值在Val 2
,我想知道如何編寫一個查詢就知道Val 1
是Val 2
與否。我不想用LIKE
因爲Val 2
(字符串)包含TOP
所有的值,以便與LIKE
查詢計數爲3
您可以有幾種方法解決這個問題。
DEMO數據庫架構和數據:
CREATE TABLE `t1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`val1` varchar(128) NOT NULL
);
INSERT INTO `t1` (`val1`) VALUES('TOP_1'),('TOP_12'),('TOP_13');
CREATE TABLE `t2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`val2` varchar(128) NOT NULL
);
INSERT INTO `t2` (`val2`) VALUES('TOP_1,TOP_3'),('TOP_4,TOP_12');
FIND_IN_SET演示:
SELECT t1.*, IF(t2.id IS NOT NULL, 1, 0) AS in_val2
FROM t1
LEFT JOIN t2 ON FIND_IN_SET(t1.val1, t2.val2)
INSTR演示:
SELECT t1.*, IF(t2.id IS NOT NULL, 1, 0) AS in_val2
FROM t1
LEFT JOIN t2 ON INSTR(CONCAT('|', REPLACE(t2.val2, ',', '|'), '|'), CONCAT('|', t1.val1, '|'))
你想知道如果val 1它在VAL2或者你想知道多少倍? – nacho
請更新您的問題,並顯示樣本數據以及您期望的表格輸出。 Java和SQL是非常不同的工具。 –
@divyaDivi試試我的解決方案 – Neodan