Jak wybrać wiele wierszy wypełnionych stałymi?
Wybieranie stałych bez odwoływania się do tabeli jest całkowicie legalne w instrukcji SQL:
SELECT 1, 2, 3
Zbiór wyników, który zwraca ten ostatni, jest pojedynczym wierszem zawierającym wartości. Zastanawiałem się, czy istnieje sposób na zaznaczenie wielu wierszy naraz za pomocą wyrażenia stałego, coś w rodzaju:
SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))
Chciałbym coś takiego jak powyżej, które działa i zwraca zestaw wyników z 3 wierszami i 3 kolumnami.
12 answers
SELECT 1, 2, 3
UNION ALL SELECT 4, 5, 6
UNION ALL SELECT 7, 8, 9
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 16:15:49
W PostgreSQL
możesz zrobić:
SELECT *
FROM (
VALUES
(1, 2),
(3, 4)
) AS q (col1, col2)
W innych systemach wystarczy użyć UNION ALL
:
SELECT 1 AS col1, 2 AS col2
-- FROM dual
-- uncomment the line above if in Oracle
UNION ALL
SELECT 3 AS col1, 3 AS col2
-- FROM dual
-- uncomment the line above if in Oracle
W Oracle
, SQL Server
i PostgreSQL
, można również wygenerować zestawy rekordów o dowolnej liczbie wierszy (dostarczanych ze zmienną zewnętrzną):
SELECT level
FROM dual
CONNECT BY
level <= :n
W Oracle
,
WITH q (l) AS
(
SELECT 1
UNION ALL
SELECT l + 1
FROM q
WHERE l < @n
)
SELECT l
FROM q
-- OPTION (MAXRECURSION 0)
-- uncomment line above if @n >= 100
W SQL Server
,
SELECT l
FROM generate_series(1, $n) l
W PostgreSQL
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 16:20:00
Wypróbuj klauzulę connect by w oracle, coś takiego
select level,level+1,level+2 from dual connect by level <=3;
Aby uzyskać więcej informacji na temat klauzuli connect by, kliknij ten link: USUNIĘTY adres URL, ponieważ strona oraclebin jest teraz złośliwa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-18 12:45:59
Następujące polecenie {[1] } działa dla mnie w PostgreSQL:
VALUES (1,2,3), (4,5,6), (7,8,9)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-28 16:39:44
Oto jak wypełniam statyczne dane w Oracle 10+ za pomocą zgrabnej sztuczki XML.
create table prop
(ID NUMBER,
NAME varchar2(10),
VAL varchar2(10),
CREATED timestamp,
CONSTRAINT PK_PROP PRIMARY KEY(ID)
);
merge into Prop p
using (
select
extractValue(value(r), '/R/ID') ID,
extractValue(value(r), '/R/NAME') NAME,
extractValue(value(r), '/R/VAL') VAL
from
(select xmltype('
<ROWSET>
<R><ID>1</ID><NAME>key1</NAME><VAL>value1</VAL></R>
<R><ID>2</ID><NAME>key2</NAME><VAL>value2</VAL></R>
<R><ID>3</ID><NAME>key3</NAME><VAL>value3</VAL></R>
</ROWSET>
') xml from dual) input,
table(xmlsequence(input.xml.extract('/ROWSET/R'))) r
) p_new
on (p.ID = p_new.ID)
when not matched then
insert
(ID, NAME, VAL, CREATED)
values
( p_new.ID, p_new.NAME, p_new.VAL, SYSTIMESTAMP );
Scalanie wstawia tylko wiersze, których brakuje w oryginalnej tabeli, co jest wygodne jeśli chcesz ponownie uruchomić skrypt Wstaw.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-22 22:25:07
SELECT *
FROM DUAL
CONNECT BY ROWNUM <= 9;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-08 15:34:02
Wyrocznia. Dzięki temu postowi PL / SQL-użyj zmiennej "List" w gdzie w klauzuli
Zestawiłem moją przykładową instrukcję, która jest łatwa do ręcznego wprowadzania wartości (jest ponownie używana w testowaniu aplikacji przez testerów):
WITH prods AS (
SELECT column_value AS prods_code
FROM TABLE(
sys.odcivarchar2list(
'prod1',
'prod2'
)
)
)
SELECT * FROM prods
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 10:51:47
Opcja dla DB2:
SELECT 101 AS C1, 102 AS C2 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT 201 AS C1, 202 AS C2 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT 301 AS C1, 302 AS C2 FROM SYSIBM.SYSDUMMY1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 09:31:53
W MySQL możesz zrobić: values (1,2), (3, 4);
mysql> values (1,2), (3, 4);
+---+---+
| 1 | 2 |
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
2 rows in set (0.004 sec)
W MySQL 8 możliwe jest również podanie nazw kolumn:
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt (a, b, c, d);
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-13 08:51:13
W Oracle
SELECT
CASE
WHEN level = 1
THEN 'HI'
WHEN level = 2
THEN 'BYE'
END TEST
FROM dual
CONNECT BY level <= 2;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-14 22:22:35
Oto Jak to zrobić używając funkcji XML DB2
SELECT *
FROM
XMLTABLE ('$doc/ROWSET/ROW' PASSING XMLPARSE ( DOCUMENT '
<ROWSET>
<ROW>
<A val="1" /> <B val="2" /> <C val="3" />
</ROW>
<ROW>
<A val="4" /> <B val="5" /> <C val="6" />
</ROW>
<ROW>
<A val="7" /> <B val="8" /> <C val="9" />
</ROW>
</ROWSET>
') AS "doc"
COLUMNS
"A" INT PATH 'A/@val',
"B" INT PATH 'B/@val',
"C" INT PATH 'C/@val'
)
AS X
;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-04 14:30:48
Ten sposób może Ci pomóc]}
SELECT TOP 3
1 AS First,
2 AS Second,
3 AS Third
FROM Any_Table_In_Your_DataBase
Any_Table_In_Your_DataBase:
każda tabela, która zawiera więcej niż 3 rekordy, lub używa dowolnej tabeli systemowej. Tutaj nie mamy obaw o dane z tej tabeli.
Możesz wprowadzić zmiany w zestawie wyników, łącząc kolumnę z pierwszą, drugą i trzecią kolumną z tabeli Any_Table_In_Your_DataBase
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-31 15:00:24