0
我有一個名爲「emoji」的表格,它存儲了每個表情符號的代碼點。按複合關鍵字的一部分選擇行,它們都與複合關鍵字的其餘部分相匹配?
CREATE TABLE `emoji` (
`emoji_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`code_point` int(10) unsigned NOT NULL,
`order` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`emoji_id`,`code_point`),
KEY `code_point, order` (`code_point`,`order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO emoji (emoji_id, code_point, `order`) VALUES(1, 127467, 0), (1, 127479, 1), (2, 127472, 0), (2, 127479, 1);
定的代碼點127467和127479,我會怎麼能夠只獲取共享相同emoji_id
(在這種情況下1
)行?
我已經試過如下:
SELECT
emoji_id,
code_point,
`order`
FROM
emoji
WHERE
code_point IN (127467, 127479) AND
emoji_id IN (
SELECT
emoji_id
FROM
emoji
GROUP BY
emoji_id
HAVING
COUNT(emoji_id) > 1
)
但127479是幾個不同的表情圖案之間共享代碼點,因此使計數過濾無用,還返回在這個例子中,一組的最後一個記錄。
所謂的關係分割。請參閱http://stackoverflow.com/questions/31101480/what-is-the-performance-difference-in-mysql-relational-division-in-and-而不是針對該任務的Mysql選項。 – Serg