Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

values

تتيح لك دالة الجدول Values إنشاء مساحة تخزين مؤقتة تُملأ أعمدتها بالقيم. وهي مفيدة للاختبارات السريعة أو لإنشاء بيانات تجريبية.

الصيغة

الصيغة الأساسية لدالة الجدول VALUES هي:

VALUES([structure,] values...)

يُستخدم عادةً على النحو التالي:

VALUES(
    ['column1_name Type1, column2_name Type2, ...'],
    (value1_row1, value2_row1, ...),
    (value1_row2, value2_row2, ...),
    ...
)

الوسائط

  • column1_name Type1, ... (اختياري). String يحدّد أسماء الأعمدة وأنواعها. إذا أُهمِل هذا الوسيط، فستُسمّى الأعمدة c1 وc2 وهكذا.
  • (value1_row1, value2_row1). Tuples تحتوي على قيم من أي نوع.

القيمة المُعادة

  • يُرجِع جدولًا مؤقتًا يحتوي على القيم المُمرَّرة.

أمثلة

Querysql
SELECT *
FROM VALUES(
    'person String, place String',
    ('Noah', 'Paris'),
    ('Emma', 'Tokyo'),
    ('Liam', 'Sydney'),
    ('Olivia', 'Berlin'),
    ('Ilya', 'London'),
    ('Sophia', 'London'),
    ('Jackson', 'Madrid'),
    ('Alexey', 'Amsterdam'),
    ('Mason', 'Venice'),
    ('Isabella', 'Prague')
)
Responseresponse
    ┌─person───┬─place─────┐
 1. │ Noah     │ Paris     │
 2. │ Emma     │ Tokyo     │
 3. │ Liam     │ Sydney    │
 4. │ Olivia   │ Berlin    │
 5. │ Ilya     │ London    │
 6. │ Sophia   │ London    │
 7. │ Jackson  │ Madrid    │
 8. │ Alexey   │ Amsterdam │
 9. │ Mason    │ Venice    │
10. │ Isabella │ Prague    │
    └──────────┴───────────┘

يمكن أيضًا استخدام VALUES مع قيم مفردة بدلًا من tuples. على سبيل المثال:

Querysql
SELECT *
FROM VALUES(
    'person String',
    'Noah',
    'Emma',
    'Liam',
    'Olivia',
    'Ilya',
    'Sophia',
    'Jackson',
    'Alexey',
    'Mason',
    'Isabella'
)
Responseresponse
    ┌─person───┐
 1. │ Noah     │
 2. │ Emma     │
 3. │ Liam     │
 4. │ Olivia   │
 5. │ Ilya     │
 6. │ Sophia   │
 7. │ Jackson  │
 8. │ Alexey   │
 9. │ Mason    │
10. │ Isabella │
    └──────────┘

أو من دون تحديد مواصفات صف ('column1_name Type1, column2_name Type2, ...' في الصيغة)، وفي هذه الحالة تُسمّى الأعمدة تلقائيًا.

على سبيل المثال:

Querysql
-- tuples as values
SELECT *
FROM VALUES(
    ('Noah', 'Paris'),
    ('Emma', 'Tokyo'),
    ('Liam', 'Sydney'),
    ('Olivia', 'Berlin'),
    ('Ilya', 'London'),
    ('Sophia', 'London'),
    ('Jackson', 'Madrid'),
    ('Alexey', 'Amsterdam'),
    ('Mason', 'Venice'),
    ('Isabella', 'Prague')
)
Responseresponse
    ┌─c1───────┬─c2────────┐
 1. │ Noah     │ Paris     │
 2. │ Emma     │ Tokyo     │
 3. │ Liam     │ Sydney    │
 4. │ Olivia   │ Berlin    │
 5. │ Ilya     │ London    │
 6. │ Sophia   │ London    │
 7. │ Jackson  │ Madrid    │
 8. │ Alexey   │ Amsterdam │
 9. │ Mason    │ Venice    │
10. │ Isabella │ Prague    │
    └──────────┴───────────┘
Querysql
-- single values
SELECT *
FROM VALUES(
    'Noah',
    'Emma',
    'Liam',
    'Olivia',
    'Ilya',
    'Sophia',
    'Jackson',
    'Alexey',
    'Mason',
    'Isabella'
)
Responseresponse
    ┌─c1───────┐
 1. │ Noah     │
 2. │ Emma     │
 3. │ Liam     │
 4. │ Olivia   │
 5. │ Ilya     │
 6. │ Sophia   │
 7. │ Jackson  │
 8. │ Alexey   │
 9. │ Mason    │
10. │ Isabella │
    └──────────┘

عبارة VALUES القياسية في SQL

اعتبارًا من الإصدار 26.3، يدعم ClickHouse أيضًا عبارة VALUES القياسية في SQL كتعبير جدول ضمن FROM، كما في PostgreSQL وMySQL وDuckDB وSQL Server. وتُعاد كتابة هذه الصيغة داخليًا لاستخدام دالة الجدول values الموضحة أعلاه.

Querysql
SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t(id, val);
Responseresponse
┌─id─┬─val─┐
│  1 │ a   │
│  2 │ b   │
│  3 │ c   │
└────┴─────┘

يمكن استخدامه ضمن CTEs:

Querysql
WITH cte AS (SELECT * FROM (VALUES (1, 'one'), (2, 'two')) AS t(id, name))
SELECT * FROM cte;

وفي عمليات JOIN:

Querysql
SELECT t1.id, t1.val, t2.val2
FROM (VALUES (1, 'a'), (2, 'b')) AS t1(id, val)
JOIN (VALUES (1, 'x'), (2, 'y')) AS t2(id, val2) ON t1.id = t2.id;

راجع أيضًا

Navigation