gpt4 book ai didi

mysql - MySQL中相交的替代方案

转载 作者:IT老高 更新时间:2023-10-28 12:54:14 29 4
gpt4 key购买 nike

我需要在 MySQL 中实现以下查询。

(select * from emovis_reporting where (id=3 and cut_name= '全プロセス' and cut_name='恐慌') ) 
intersect
( select * from emovis_reporting where (id=3) and ( cut_name='全プロセス' or cut_name='恐慌') )

我知道 intersect 不在 MySQL 中。所以我需要另一种方式。请指导我。

最佳答案

Microsoft SQL Server 的 INTERSECT “返回由 INTERSECT 操作数左右两侧的查询返回的任何不同值” 这与标准的 INNER JOINWHERE 不同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 JOINDISTINCT:

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

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

另一个使用 WHERE ... INDISTINCT 的例子:

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

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

关于mysql - MySQL中相交的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2621382/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com