gpt4 book ai didi

MySQL:组合两个 SELECT 语句以仅显示相交的行

转载 作者:行者123 更新时间:2023-11-30 00:19:28 25 4
gpt4 key购买 nike

我正在构建一个搜索函数,我必须组合两个 SELECT 语句并仅显示相交的行(即,如果单独运行两个 SELECT 语句,则会出现在两个 SELECT 语句中的行)。

例如,假设我有两张 table 。

一种称为水果,另一种称为蔬菜。每个表有十行。

第一个声明...

SELECT * FROM `fruits` WHERE 1

...将显示全部 10 种水果。

第二个声明...

SELECT t1.*
FROM fruits t1, vegetables t2
WHERE t1.`color` = t2.`color`

...会显示 2 个水果。

如果我像这样组合这两个选择语句...

SELECT * FROM `fruits` WHERE 1
UNION
SELECT t1.*
FROM fruits t1, vegetables t2
WHERE t1.`color` = t2.`color`

...结果显示所有 10 个水果,这不是我想要的。

那么我该如何修改上面的语句,使其只显示相交的行(这应该给我 2 个水果)?

我需要保持第一个 SELECT 语句完整并连接第二个 SELECT 语句以仅生成相交的行。这是因为我正在修改现有的搜索功能。

非常感谢!

编辑:通过一些谷歌搜索,我了解到我想要的可以使用 INTERSECT 来实现,如下所示:

SELECT * FROM `fruits` WHERE 1
INTERSECT
SELECT t1.*
FROM fruits t1, vegetables t2
WHERE t1.`color` = t2.`color`

但这就是 MS SQL。我如何实现上述...

  1. 使用 MySQL?
  2. 同时保持第一个 SELECT 语句不变?

最佳答案

So how do I modify the above statement so that it will only show overlapped rows (which should give me 2 fruits)?

下面的查询不是给出了正确的结果吗?

SELECT t1.*
FROM fruits t1, vegetables t2
WHERE t1.`color` = t2.`color`

它是内连接,你可以将其重写为:

SELECT t1.*
FROM fruits t1
INNER JOIN vegetables t2 ON t1.`color` = t2.`color`

关于MySQL:组合两个 SELECT 语句以仅显示相交的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355311/

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