我有這樣一個表:檢索所有IDS其中`name` LIKE%current_name在一個查詢
id | name
1 | gecko
2 | b-gecko
3 | c-gecko
4 | toucan
5 | s-toucan
我想在一個查詢id
,name
和lookalike
領域檢索。喜歡的東西:
id | name | lookalike
1 | gecko | 1,2,3
4 | toucan | 4,5
...或類似:
id | name | lookalike
1 | gecko | 2
1 | gecko | 3
4 | toucan | 5
這甚至可能嗎?我在該表中有50,000條記錄,如果逐行檢查,則需要對每條記錄進行很多簡單的查詢。
我想查詢應該是這個樣子:
SELECT t1.`id`, t1.`name`, (SELECT t2.`id` FROM `table1` t2 WHERE t2.`name` LIKE CONCAT('%', t1.`name`)) as `lookalike` FROM `table1` t1
...但我缺少一個CONCAT。謝謝!
LE:即使使用
SELECT t1.`id`, t1.`name`, (SELECT GROUP_CONCAT(id SEPARATOR ',') FROM `table1` t2 WHERE t2.`name` LIKE CONCAT('%', t1.`name`) AND t1.name<>t2.name) as `lookalike` FROM `table1` t1
我得到了很多服務器崩潰的由於大量行進行檢查。我知道我對LIKE有最糟糕的情況,但我試圖弄清楚如何優化這個。
對於第2個版本,我已經試過
SELECT
t.id,
t.name,
t2.id
FROM
table1 t
LEFT JOIN
table1 t2
ON
t2.name LIKE CONCAT('%', t.name)
但這個崩潰的服務器了。
? – Jens 2015-02-07 14:53:08
它是由一個子查詢生成的,該子查詢搜索名稱與最初一行相同的行的id ...請原諒我缺乏明確解釋,但請查看期望結果是什麼 – valicu2000 2015-02-07 14:57:47
什麼是你的查詢結果? – Jens 2015-02-07 15:00:00