Mysql
 sql >> база данни >  >> RDS >> Mysql

Алтернатива на Intersect в MySQL

INTERSECT на Microsoft SQL Server "връща всякакви различни стойности, които се връщат както от заявката от лявата, така и от дясната страна на операнда INTERSECT" Това е различно от стандартното INNER JOIN или WHERE EXISTS заявка.

SQL сървър

CREATE TABLE table_a (
    id INT PRIMARY KEY,
    value VARCHAR(255)
);

CREATE TABLE table_b (
    id INT PRIMARY KEY,
    value VARCHAR(255)
);

INSERT INTO table_a VALUES (1, 'A'), (2, 'B'), (3, 'B');
INSERT INTO table_b VALUES (1, 'B');

SELECT value FROM table_a
INTERSECT
SELECT value FROM table_b

value
-----
B

(1 rows affected)

MySQL

CREATE TABLE `table_a` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `value` varchar(255),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `table_b` LIKE `table_a`;

INSERT INTO table_a VALUES (1, 'A'), (2, 'B'), (3, 'B');
INSERT INTO table_b VALUES (1, 'B');

SELECT value FROM table_a
INNER JOIN table_b
USING (value);

+-------+
| value |
+-------+
| B     |
| B     |
+-------+
2 rows in set (0.00 sec)

SELECT value FROM table_a
WHERE (value) IN
(SELECT value FROM table_b);

+-------+
| value |
+-------+
| B     |
| B     |
+-------+

С този конкретен въпрос се включва колоната id, така че дублиращи се стойности няма да бъдат върнати, но за пълнота, ето алтернатива на MySQL, използваща INNER JOIN и DISTINCT :

SELECT DISTINCT value FROM table_a
INNER JOIN table_b
USING (value);

+-------+
| value |
+-------+
| B     |
+-------+

И друг пример, използващ WHERE ... IN и DISTINCT :

SELECT DISTINCT value FROM table_a
WHERE (value) IN
(SELECT value FROM table_b);

+-------+
| value |
+-------+
| B     |
+-------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция MySQL SIGN() – Разберете дали числото е положително или отрицателно в MySQL

  2. Как да направите резервно копие на една таблица в MySQL база данни?

  3. Формат на датата в MySQL ДД/ММ/ГГГГ избор на заявка?

  4. Обединете две таблици в една SQL заявка и направете стойностите на датите уникални

  5. WAMP Няма достъп в локална мрежа 403 Забранено