Reputation: 10163
I have below Mysql query -
Select ('GOOGLE.COM',
'MSN.COM',
'YAHOO.COM',
'YOUTUBE.COM',
'BING.COM',
'FACEBOOK.COM',
'LIVE.COM',
'MICROSOFT.COM',
'WIKIPEDIA.ORG',
'LINKEDIN.COM') as domain from dual;
I'm expecting the below resultset.
'GOOGLE.COM'
'MSN.COM'
'YAHOO.COM'
'YOUTUBE.COM'
'BING.COM'
'FACEBOOK.COM'
'LIVE.COM'
'MICROSOFT.COM'
'WIKIPEDIA.ORG'
'LINKEDIN.COM'
But I'm getting error Operand should contain 1 column(s)
.
How can I fix my query so I can get correct results?
Upvotes: 0
Views: 115
Reputation: 222462
If you want one record per value, you can use union all
:
select 'GOOGLE.COM' domain
union all select 'MSN.COM'
union all select 'YAHOO.COM'
union all select 'YOUTUBE.COM'
union all select 'BING.COM'
union all select 'FACEBOOK.COM'
union all select 'LIVE.COM'
union all select 'MICROSOFT.COM'
union all select 'WIKIPEDIA.ORG'
union all select 'LINKEDIN.COM'
In other RDMBS, such as Postgres or SQL Server, this would have been as simple as:
SELECT domain
FROM ( VALUES
('GOOGLE.COM'),
('MSN.COM'),
('YAHOO.COM'),
('YOUTUBE.COM'),
('BING.COM'),
('FACEBOOK.COM'),
('LIVE.COM'),
('MICROSOFT.COM'),
('WIKIPEDIA.ORG'),
('LINKEDIN.COM')
) AS t(domain);
But MySQL does not support this syntax. A workaround is to to create a table, that you can then link in your queries:
CREATE TABLE tmp (domain VARCHAR(50));
INSERT INTO tmp(domain) VALUES
('GOOGLE.COM'),
('MSN.COM'),
('YAHOO.COM'),
('YOUTUBE.COM'),
('BING.COM'),
('FACEBOOK.COM'),
('LIVE.COM'),
('MICROSOFT.COM'),
('WIKIPEDIA.ORG'),
('LINKEDIN.COM')
;
Upvotes: 2