How to exclude certain rows from sql select
How do I exclude certain rows?
For example, I have the following table:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 1 | 1 | R |
| 1 | 2 | D |
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
| 4 | 6 | D |
+------+------+------+
I need to select only:
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
My select that does not work properly:
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual),
tt as (select t.*,count(*) over (partition by c1) cc from t ) select * from tt where cc=1 and c3='R';
Thanks in advance!
sql oracle
add a comment |
How do I exclude certain rows?
For example, I have the following table:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 1 | 1 | R |
| 1 | 2 | D |
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
| 4 | 6 | D |
+------+------+------+
I need to select only:
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
My select that does not work properly:
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual),
tt as (select t.*,count(*) over (partition by c1) cc from t ) select * from tt where cc=1 and c3='R';
Thanks in advance!
sql oracle
3
can you post tables but not in pictures
– nikhil sugandh
Nov 23 at 10:00
Are you using MySQL or Oracle?
– jarlh
Nov 23 at 10:01
Instead of me trying to guess what you are trying to do on the basis of non working code you could tell me.
– P.Salmon
Nov 23 at 10:12
I'm using PL/SQL developer v.10
– Karina Nogaibayeva
Nov 23 at 10:25
1
What is the logic behind why you only want to select those two rows? Is it that you're trying to select rows where the col3 values are all 'R' across each col1 value? Or is it rows where the col3 values are all the same for each col1 value? Or something else? Please edit your question to add in why you want to select those rows and not any others.
– Boneist
Nov 23 at 10:44
add a comment |
How do I exclude certain rows?
For example, I have the following table:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 1 | 1 | R |
| 1 | 2 | D |
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
| 4 | 6 | D |
+------+------+------+
I need to select only:
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
My select that does not work properly:
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual),
tt as (select t.*,count(*) over (partition by c1) cc from t ) select * from tt where cc=1 and c3='R';
Thanks in advance!
sql oracle
How do I exclude certain rows?
For example, I have the following table:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 1 | 1 | R |
| 1 | 2 | D |
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
| 4 | 6 | D |
+------+------+------+
I need to select only:
| 2 | 3 | R |
| 2 | 4 | R |
| 3 | 5 | R |
My select that does not work properly:
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual),
tt as (select t.*,count(*) over (partition by c1) cc from t ) select * from tt where cc=1 and c3='R';
Thanks in advance!
sql oracle
sql oracle
edited Nov 23 at 11:51
Salman A
175k66336424
175k66336424
asked Nov 23 at 9:59
Karina Nogaibayeva
73
73
3
can you post tables but not in pictures
– nikhil sugandh
Nov 23 at 10:00
Are you using MySQL or Oracle?
– jarlh
Nov 23 at 10:01
Instead of me trying to guess what you are trying to do on the basis of non working code you could tell me.
– P.Salmon
Nov 23 at 10:12
I'm using PL/SQL developer v.10
– Karina Nogaibayeva
Nov 23 at 10:25
1
What is the logic behind why you only want to select those two rows? Is it that you're trying to select rows where the col3 values are all 'R' across each col1 value? Or is it rows where the col3 values are all the same for each col1 value? Or something else? Please edit your question to add in why you want to select those rows and not any others.
– Boneist
Nov 23 at 10:44
add a comment |
3
can you post tables but not in pictures
– nikhil sugandh
Nov 23 at 10:00
Are you using MySQL or Oracle?
– jarlh
Nov 23 at 10:01
Instead of me trying to guess what you are trying to do on the basis of non working code you could tell me.
– P.Salmon
Nov 23 at 10:12
I'm using PL/SQL developer v.10
– Karina Nogaibayeva
Nov 23 at 10:25
1
What is the logic behind why you only want to select those two rows? Is it that you're trying to select rows where the col3 values are all 'R' across each col1 value? Or is it rows where the col3 values are all the same for each col1 value? Or something else? Please edit your question to add in why you want to select those rows and not any others.
– Boneist
Nov 23 at 10:44
3
3
can you post tables but not in pictures
– nikhil sugandh
Nov 23 at 10:00
can you post tables but not in pictures
– nikhil sugandh
Nov 23 at 10:00
Are you using MySQL or Oracle?
– jarlh
Nov 23 at 10:01
Are you using MySQL or Oracle?
– jarlh
Nov 23 at 10:01
Instead of me trying to guess what you are trying to do on the basis of non working code you could tell me.
– P.Salmon
Nov 23 at 10:12
Instead of me trying to guess what you are trying to do on the basis of non working code you could tell me.
– P.Salmon
Nov 23 at 10:12
I'm using PL/SQL developer v.10
– Karina Nogaibayeva
Nov 23 at 10:25
I'm using PL/SQL developer v.10
– Karina Nogaibayeva
Nov 23 at 10:25
1
1
What is the logic behind why you only want to select those two rows? Is it that you're trying to select rows where the col3 values are all 'R' across each col1 value? Or is it rows where the col3 values are all the same for each col1 value? Or something else? Please edit your question to add in why you want to select those rows and not any others.
– Boneist
Nov 23 at 10:44
What is the logic behind why you only want to select those two rows? Is it that you're trying to select rows where the col3 values are all 'R' across each col1 value? Or is it rows where the col3 values are all the same for each col1 value? Or something else? Please edit your question to add in why you want to select those rows and not any others.
– Boneist
Nov 23 at 10:44
add a comment |
7 Answers
7
active
oldest
votes
select * from table where col2 = 'R'
or if you want to exclude rows with D value just
select * from table where col2 != 'D'
add a comment |
It depends on your requirements but you can do in this way:
SELECT * FROM `table` WHERE col1 = 2 AND col3 = "R"
if you want to exclude just do it like WHERE col1 != 1
You ca also use IN clause also e.g.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
This syntax is for MySql, but you can modify it as per your requirement or database you are using.
add a comment |
this will work :
select * from (select * from table_name) where rownum<=4
minus
select * from ( select * from table_name) where rownum<=2
How should that work? There is no row namedrownum
in the example
– Nico Haase
Nov 23 at 10:35
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
|
show 2 more comments
My guess is that you want all rows for a col1 where no row for a col1 = D and at least 1 row for a col1 = R. @ where [not] exists may do
DROP TABLE T;
CREATE TABLE T
(Col1 NUMBER, Col2 NUMBER, Col3 VARCHAR(1));
INSERT INTO T VALUES ( 1 , 1 , 'R');
INSERT INTO T VALUES ( 1 , 2 , 'D');
INSERT INTO T VALUES ( 2 , 3 , 'R');
INSERT INTO T VALUES ( 2 , 4 , 'R');
INSERT INTO T VALUES ( 3 , 5 , 'R');
INSERT INTO T VALUES ( 3 , 6 , 'D');
INSERT INTO T VALUES ( 4 , 5 , 'X');
INSERT INTO T VALUES ( 4 , 6 , 'Y');
INSERT INTO T VALUES ( 5 , 6 , 'X');
INSERT INTO T VALUES ( 5 , 5 , 'R');
INSERT INTO T VALUES ( 5 , 6 , 'Y');
SELECT *
FROM T
WHERE NOT EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'D') AND
EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'R');
Result
COL1 COL2 COL3
---------- ---------- ----
5 6 X
5 5 R
5 6 Y
2 3 R
2 4 R
add a comment |
use row_number()
window function
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual
),
t1 as
(
select c1,c2,c3,row_number() over(order by c2) rn from t
) select * from t1 where t1.rn>=3 and t1.rn<=5
demo link
C1 C2 C3
2 3 R
2 4 R
3 5 R
1
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
– XING
Nov 23 at 10:12
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
add a comment |
You can try using correlated subquery
select * from tablename a
from
where exists (select 1 tablename b where a.col1=b.col1 having count(*)>1)
add a comment |
Based on what you have provided I can only surmise that the only requirement is for COL1 to be equal to 2 or 3 in that case all you have to do is (assuming that you actually have table);
SELECT * FROM <table_name>
WHERE col1 IN (2,3);
This will give you the desired output for the particular example provided in the question. If there is a selection requirement that goes beyond retrieving data where column 1 is either 2 or 3 than a more specific or precise answer can be provided.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444409%2fhow-to-exclude-certain-rows-from-sql-select%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
7 Answers
7
active
oldest
votes
7 Answers
7
active
oldest
votes
active
oldest
votes
active
oldest
votes
select * from table where col2 = 'R'
or if you want to exclude rows with D value just
select * from table where col2 != 'D'
add a comment |
select * from table where col2 = 'R'
or if you want to exclude rows with D value just
select * from table where col2 != 'D'
add a comment |
select * from table where col2 = 'R'
or if you want to exclude rows with D value just
select * from table where col2 != 'D'
select * from table where col2 = 'R'
or if you want to exclude rows with D value just
select * from table where col2 != 'D'
answered Nov 23 at 10:06
Arga Putra
1
1
add a comment |
add a comment |
It depends on your requirements but you can do in this way:
SELECT * FROM `table` WHERE col1 = 2 AND col3 = "R"
if you want to exclude just do it like WHERE col1 != 1
You ca also use IN clause also e.g.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
This syntax is for MySql, but you can modify it as per your requirement or database you are using.
add a comment |
It depends on your requirements but you can do in this way:
SELECT * FROM `table` WHERE col1 = 2 AND col3 = "R"
if you want to exclude just do it like WHERE col1 != 1
You ca also use IN clause also e.g.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
This syntax is for MySql, but you can modify it as per your requirement or database you are using.
add a comment |
It depends on your requirements but you can do in this way:
SELECT * FROM `table` WHERE col1 = 2 AND col3 = "R"
if you want to exclude just do it like WHERE col1 != 1
You ca also use IN clause also e.g.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
This syntax is for MySql, but you can modify it as per your requirement or database you are using.
It depends on your requirements but you can do in this way:
SELECT * FROM `table` WHERE col1 = 2 AND col3 = "R"
if you want to exclude just do it like WHERE col1 != 1
You ca also use IN clause also e.g.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
This syntax is for MySql, but you can modify it as per your requirement or database you are using.
edited Nov 23 at 10:47
a_horse_with_no_name
291k46445539
291k46445539
answered Nov 23 at 10:21
Hemant Kumar
405317
405317
add a comment |
add a comment |
this will work :
select * from (select * from table_name) where rownum<=4
minus
select * from ( select * from table_name) where rownum<=2
How should that work? There is no row namedrownum
in the example
– Nico Haase
Nov 23 at 10:35
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
|
show 2 more comments
this will work :
select * from (select * from table_name) where rownum<=4
minus
select * from ( select * from table_name) where rownum<=2
How should that work? There is no row namedrownum
in the example
– Nico Haase
Nov 23 at 10:35
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
|
show 2 more comments
this will work :
select * from (select * from table_name) where rownum<=4
minus
select * from ( select * from table_name) where rownum<=2
this will work :
select * from (select * from table_name) where rownum<=4
minus
select * from ( select * from table_name) where rownum<=2
edited Nov 23 at 10:52
answered Nov 23 at 10:02
nikhil sugandh
1,2542719
1,2542719
How should that work? There is no row namedrownum
in the example
– Nico Haase
Nov 23 at 10:35
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
|
show 2 more comments
How should that work? There is no row namedrownum
in the example
– Nico Haase
Nov 23 at 10:35
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
How should that work? There is no row named
rownum
in the example– Nico Haase
Nov 23 at 10:35
How should that work? There is no row named
rownum
in the example– Nico Haase
Nov 23 at 10:35
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@NicoHaase its called pseudo column bro rownum is a pseudo column
– nikhil sugandh
Nov 23 at 10:43
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
@Karina Nogaibayeva its working right??
– nikhil sugandh
Nov 23 at 10:44
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
What kind of "pseudo column" is that? Does PostgreSQL support it?
– Nico Haase
Nov 23 at 10:46
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
@NicoHaase its tagged oracle thats why
– nikhil sugandh
Nov 23 at 10:47
|
show 2 more comments
My guess is that you want all rows for a col1 where no row for a col1 = D and at least 1 row for a col1 = R. @ where [not] exists may do
DROP TABLE T;
CREATE TABLE T
(Col1 NUMBER, Col2 NUMBER, Col3 VARCHAR(1));
INSERT INTO T VALUES ( 1 , 1 , 'R');
INSERT INTO T VALUES ( 1 , 2 , 'D');
INSERT INTO T VALUES ( 2 , 3 , 'R');
INSERT INTO T VALUES ( 2 , 4 , 'R');
INSERT INTO T VALUES ( 3 , 5 , 'R');
INSERT INTO T VALUES ( 3 , 6 , 'D');
INSERT INTO T VALUES ( 4 , 5 , 'X');
INSERT INTO T VALUES ( 4 , 6 , 'Y');
INSERT INTO T VALUES ( 5 , 6 , 'X');
INSERT INTO T VALUES ( 5 , 5 , 'R');
INSERT INTO T VALUES ( 5 , 6 , 'Y');
SELECT *
FROM T
WHERE NOT EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'D') AND
EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'R');
Result
COL1 COL2 COL3
---------- ---------- ----
5 6 X
5 5 R
5 6 Y
2 3 R
2 4 R
add a comment |
My guess is that you want all rows for a col1 where no row for a col1 = D and at least 1 row for a col1 = R. @ where [not] exists may do
DROP TABLE T;
CREATE TABLE T
(Col1 NUMBER, Col2 NUMBER, Col3 VARCHAR(1));
INSERT INTO T VALUES ( 1 , 1 , 'R');
INSERT INTO T VALUES ( 1 , 2 , 'D');
INSERT INTO T VALUES ( 2 , 3 , 'R');
INSERT INTO T VALUES ( 2 , 4 , 'R');
INSERT INTO T VALUES ( 3 , 5 , 'R');
INSERT INTO T VALUES ( 3 , 6 , 'D');
INSERT INTO T VALUES ( 4 , 5 , 'X');
INSERT INTO T VALUES ( 4 , 6 , 'Y');
INSERT INTO T VALUES ( 5 , 6 , 'X');
INSERT INTO T VALUES ( 5 , 5 , 'R');
INSERT INTO T VALUES ( 5 , 6 , 'Y');
SELECT *
FROM T
WHERE NOT EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'D') AND
EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'R');
Result
COL1 COL2 COL3
---------- ---------- ----
5 6 X
5 5 R
5 6 Y
2 3 R
2 4 R
add a comment |
My guess is that you want all rows for a col1 where no row for a col1 = D and at least 1 row for a col1 = R. @ where [not] exists may do
DROP TABLE T;
CREATE TABLE T
(Col1 NUMBER, Col2 NUMBER, Col3 VARCHAR(1));
INSERT INTO T VALUES ( 1 , 1 , 'R');
INSERT INTO T VALUES ( 1 , 2 , 'D');
INSERT INTO T VALUES ( 2 , 3 , 'R');
INSERT INTO T VALUES ( 2 , 4 , 'R');
INSERT INTO T VALUES ( 3 , 5 , 'R');
INSERT INTO T VALUES ( 3 , 6 , 'D');
INSERT INTO T VALUES ( 4 , 5 , 'X');
INSERT INTO T VALUES ( 4 , 6 , 'Y');
INSERT INTO T VALUES ( 5 , 6 , 'X');
INSERT INTO T VALUES ( 5 , 5 , 'R');
INSERT INTO T VALUES ( 5 , 6 , 'Y');
SELECT *
FROM T
WHERE NOT EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'D') AND
EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'R');
Result
COL1 COL2 COL3
---------- ---------- ----
5 6 X
5 5 R
5 6 Y
2 3 R
2 4 R
My guess is that you want all rows for a col1 where no row for a col1 = D and at least 1 row for a col1 = R. @ where [not] exists may do
DROP TABLE T;
CREATE TABLE T
(Col1 NUMBER, Col2 NUMBER, Col3 VARCHAR(1));
INSERT INTO T VALUES ( 1 , 1 , 'R');
INSERT INTO T VALUES ( 1 , 2 , 'D');
INSERT INTO T VALUES ( 2 , 3 , 'R');
INSERT INTO T VALUES ( 2 , 4 , 'R');
INSERT INTO T VALUES ( 3 , 5 , 'R');
INSERT INTO T VALUES ( 3 , 6 , 'D');
INSERT INTO T VALUES ( 4 , 5 , 'X');
INSERT INTO T VALUES ( 4 , 6 , 'Y');
INSERT INTO T VALUES ( 5 , 6 , 'X');
INSERT INTO T VALUES ( 5 , 5 , 'R');
INSERT INTO T VALUES ( 5 , 6 , 'Y');
SELECT *
FROM T
WHERE NOT EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'D') AND
EXISTS(SELECT 1 FROM T T1 WHERE T1.COL1 = T.COL1 AND COL3 = 'R');
Result
COL1 COL2 COL3
---------- ---------- ----
5 6 X
5 5 R
5 6 Y
2 3 R
2 4 R
answered Nov 23 at 10:54
P.Salmon
7,5422415
7,5422415
add a comment |
add a comment |
use row_number()
window function
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual
),
t1 as
(
select c1,c2,c3,row_number() over(order by c2) rn from t
) select * from t1 where t1.rn>=3 and t1.rn<=5
demo link
C1 C2 C3
2 3 R
2 4 R
3 5 R
1
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
– XING
Nov 23 at 10:12
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
add a comment |
use row_number()
window function
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual
),
t1 as
(
select c1,c2,c3,row_number() over(order by c2) rn from t
) select * from t1 where t1.rn>=3 and t1.rn<=5
demo link
C1 C2 C3
2 3 R
2 4 R
3 5 R
1
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
– XING
Nov 23 at 10:12
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
add a comment |
use row_number()
window function
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual
),
t1 as
(
select c1,c2,c3,row_number() over(order by c2) rn from t
) select * from t1 where t1.rn>=3 and t1.rn<=5
demo link
C1 C2 C3
2 3 R
2 4 R
3 5 R
use row_number()
window function
with t (c1,c2,c3) as(
select 1 , 1 , 'R' from dual union all
select 1 , 2 , 'D' from dual union all
select 2 , 3 , 'R' from dual union all
select 2 , 4 , 'R' from dual union all
select 3 , 5 , 'R' from dual union all
select 4 , 6 , 'D' from dual
),
t1 as
(
select c1,c2,c3,row_number() over(order by c2) rn from t
) select * from t1 where t1.rn>=3 and t1.rn<=5
demo link
C1 C2 C3
2 3 R
2 4 R
3 5 R
edited Nov 23 at 11:29
answered Nov 23 at 10:00
Zaynul Abadin Tuhin
11.3k2831
11.3k2831
1
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
– XING
Nov 23 at 10:12
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
add a comment |
1
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
– XING
Nov 23 at 10:12
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
1
1
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
Nov 23 at 10:12
Why downvote for this answer. It looks correct to me. As per given data this query should result in the expected output.
Nov 23 at 10:12
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
@XING don't know why they have given downvote but thanks to you
– Zaynul Abadin Tuhin
Nov 23 at 10:21
add a comment |
You can try using correlated subquery
select * from tablename a
from
where exists (select 1 tablename b where a.col1=b.col1 having count(*)>1)
add a comment |
You can try using correlated subquery
select * from tablename a
from
where exists (select 1 tablename b where a.col1=b.col1 having count(*)>1)
add a comment |
You can try using correlated subquery
select * from tablename a
from
where exists (select 1 tablename b where a.col1=b.col1 having count(*)>1)
You can try using correlated subquery
select * from tablename a
from
where exists (select 1 tablename b where a.col1=b.col1 having count(*)>1)
edited Nov 23 at 11:39
answered Nov 23 at 10:06
fa06
11k2917
11k2917
add a comment |
add a comment |
Based on what you have provided I can only surmise that the only requirement is for COL1 to be equal to 2 or 3 in that case all you have to do is (assuming that you actually have table);
SELECT * FROM <table_name>
WHERE col1 IN (2,3);
This will give you the desired output for the particular example provided in the question. If there is a selection requirement that goes beyond retrieving data where column 1 is either 2 or 3 than a more specific or precise answer can be provided.
add a comment |
Based on what you have provided I can only surmise that the only requirement is for COL1 to be equal to 2 or 3 in that case all you have to do is (assuming that you actually have table);
SELECT * FROM <table_name>
WHERE col1 IN (2,3);
This will give you the desired output for the particular example provided in the question. If there is a selection requirement that goes beyond retrieving data where column 1 is either 2 or 3 than a more specific or precise answer can be provided.
add a comment |
Based on what you have provided I can only surmise that the only requirement is for COL1 to be equal to 2 or 3 in that case all you have to do is (assuming that you actually have table);
SELECT * FROM <table_name>
WHERE col1 IN (2,3);
This will give you the desired output for the particular example provided in the question. If there is a selection requirement that goes beyond retrieving data where column 1 is either 2 or 3 than a more specific or precise answer can be provided.
Based on what you have provided I can only surmise that the only requirement is for COL1 to be equal to 2 or 3 in that case all you have to do is (assuming that you actually have table);
SELECT * FROM <table_name>
WHERE col1 IN (2,3);
This will give you the desired output for the particular example provided in the question. If there is a selection requirement that goes beyond retrieving data where column 1 is either 2 or 3 than a more specific or precise answer can be provided.
answered Nov 23 at 12:07
m_e_s
11
11
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444409%2fhow-to-exclude-certain-rows-from-sql-select%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
can you post tables but not in pictures
– nikhil sugandh
Nov 23 at 10:00
Are you using MySQL or Oracle?
– jarlh
Nov 23 at 10:01
Instead of me trying to guess what you are trying to do on the basis of non working code you could tell me.
– P.Salmon
Nov 23 at 10:12
I'm using PL/SQL developer v.10
– Karina Nogaibayeva
Nov 23 at 10:25
1
What is the logic behind why you only want to select those two rows? Is it that you're trying to select rows where the col3 values are all 'R' across each col1 value? Or is it rows where the col3 values are all the same for each col1 value? Or something else? Please edit your question to add in why you want to select those rows and not any others.
– Boneist
Nov 23 at 10:44