如何使用联接选择满足同一列的两个条件的记录?

时间:2021-02-05 20:16:43

标签: sql

我有一个包含两个(实际上更多)表的数据库:帐户和资产。这种关系是多个资产到一个帐户。

现有数据示例:

Account     Asset
Abbot       EZ111
Abbot       7000261
Anderson    EZ431
Barton      EZ207
Barton      8000400
Charlie     8000465
Charlie     EZ576
Dickens     EZ420
Elmer       EZ982

我想找到所有具有以“EZ”开头的资产,但不具有以“7”或“8”开头的资产的帐户。

所以对于上面的数据,我期待的结果是:

Account     Asset
Anderson    EZ431
Dickens     EZ420
Elmer       EZ982

免责声明:显然我不是靠做 SQL 为生的,但我从 W3 站点学到了很多东西。我想不通的是这个查询的基本结构。我知道如何进行 Join,但我不知道如何两次查询同一列。

对不起,如果我对这个网站有点陌生,但我主要使用 InforCRM 中的创建组。像这样的查询似乎超出了群组“搜索条件”功能的能力范围。

此致,

蒂姆

3 个答案:

答案 0 :(得分:0)

你的措辞方式,我建议 static void Main(string[] args) { int numStudents = 5; student[] std = new student[numStudents]; for (int n = 0; n < numStudents ; n++) { Console.WriteLine("Enter the first name of student " + (n + 1)); std[n].fName = Console.ReadLine(); Console.WriteLine("Enter the last name of student " + (n + 1)); std[n].lName = Console.ReadLine(); Console.WriteLine(); std[n].id = n + 1; std[n].gpa = 0; } gpa(std); printList(std); }

not exists

答案 1 :(得分:0)

从表名中选择* 其中像“EZ%”这样的资产和账户不在(从表名中选择账户,其中像“7%”这样的资产或像“8%”这样的资产)

答案 2 :(得分:0)

其他人打败了我,但这里有一个完整的工作示例,基于我认为您的数据可能是什么样子

https://www.db-fiddle.com/f/8R6CZ36vjZgCUCdqU3DRi/1

SELECT ACT.ACCOUNT, AST.ASSET
FROM ACCOUNT ACT
INNER JOIN ASSET AST ON ACT.ACCOUNT = AST.ACCOUNT
WHERE AST.ASSET LIKE 'EZ%' 
    AND ACT.ACCOUNT NOT IN (
      SELECT ACCOUNT FROM ASSET WHERE ASSET LIKE '7%' OR ASSET LIKE '8%'
    );