如何 select 基于列上的 AND 条件的多行?
How to select multiple rows based on AND condition on a column?
我正在尝试类似的东西:
select name from myTable where id in (1056,1066,1069,1080,1404,1406,1407,3018)
但这就像 OR 条件一样,如果我在这些值之间使用 AND 它不会给出任何结果,因为它试图在一个单元格中进行匹配。
示例数据:
Name ID : abc 1 |abc 2| abc 3| def 2| fgh 3
我的预期输出是:
Name: abc
我想找到所有不同的名字
拥有所有相应的ID
对此有任何指示吗?
看来您对逻辑感到困惑,如果您使用 AND 则条件变为假,因为不会有 ID 为 1056 和 1066 的任何单行。
例如。假设你有这个 table
ID name level
----------------
1056 abc bce
1066 bcd def
select name from myTable where id =1056 AND id=1066
现在用第一行替换 id
来评估它
1056 =1056 AND 1056=1066 (True AND False) is False
1066 =1056 AND 1066=1066 (False AND True) is False
所以条件永远不会变为真,所以没有选择任何行
更新
根据你更新的问题,这样写
select distinct name from myTable where id in (1056,1066,1069,1080,1404,1406,1407,3018)
呃。同一字段中有多个值?
select name from myTable
where id like '%1056%'
or id like '%1066%'
or id like '%1069%'
等等
Logically there is no output of your query
,但是如果想使用multiple AND
一次而不写多次写AND
,可以使用Row Subqueries:
select name
from myTable
where (id,id,id,id,id,id,id,id)=(1056,1066,1069,1080,1404,1406,1407,3018)
等于:
select name
from myTable
where id =1056
AND id =1066
AND id =1069
AND id =1080
AND id =1404
AND id =1406
AND id =1407
AND id =3018
对于这类问题,我能想到的最好的解决办法是使用关系代数的除法特性。
它将给出预期的结果。
示例示例:-
http://coronet.iicm.tugraz.at/Dbase1/scripts/rdbh06.htm
我正在尝试类似的东西:
select name from myTable where id in (1056,1066,1069,1080,1404,1406,1407,3018)
但这就像 OR 条件一样,如果我在这些值之间使用 AND 它不会给出任何结果,因为它试图在一个单元格中进行匹配。
示例数据:
Name ID : abc 1 |abc 2| abc 3| def 2| fgh 3
我的预期输出是:
Name: abc
我想找到所有不同的名字 拥有所有相应的ID 对此有任何指示吗?
看来您对逻辑感到困惑,如果您使用 AND 则条件变为假,因为不会有 ID 为 1056 和 1066 的任何单行。
例如。假设你有这个 table
ID name level ---------------- 1056 abc bce
1066 bcd def
select name from myTable where id =1056 AND id=1066
现在用第一行替换 id
来评估它1056 =1056 AND 1056=1066 (True AND False) is False
1066 =1056 AND 1066=1066 (False AND True) is False
所以条件永远不会变为真,所以没有选择任何行
更新 根据你更新的问题,这样写
select distinct name from myTable where id in (1056,1066,1069,1080,1404,1406,1407,3018)
呃。同一字段中有多个值?
select name from myTable
where id like '%1056%'
or id like '%1066%'
or id like '%1069%'
等等
Logically there is no output of your query
,但是如果想使用multiple AND
一次而不写多次写AND
,可以使用Row Subqueries:
select name
from myTable
where (id,id,id,id,id,id,id,id)=(1056,1066,1069,1080,1404,1406,1407,3018)
等于:
select name
from myTable
where id =1056
AND id =1066
AND id =1069
AND id =1080
AND id =1404
AND id =1406
AND id =1407
AND id =3018
对于这类问题,我能想到的最好的解决办法是使用关系代数的除法特性。 它将给出预期的结果。 示例示例:- http://coronet.iicm.tugraz.at/Dbase1/scripts/rdbh06.htm