SQL Server'da bir SELECT'ten nasıl GÜNCELLEŞTİRİRİM?


3694

Gelen SQL Server , bu mümkündür INSERT, bir kullanarak bir tabloya SELECTaçıklama:

INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3 
FROM other_table 
WHERE sql = 'cool'

Ayrıca bir üzerinden güncelleme yapmak mümkün mü SELECT? Değerleri içeren geçici bir tablo var ve bu değerleri kullanarak başka bir tablo güncelleştirmek istiyorum. Belki böyle bir şey:

UPDATE Table SET col1, col2
SELECT col1, col2 
FROM other_table 
WHERE sql = 'cool'
WHERE Table.id = other_table.id

Yanıtlar:


5369
UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'

16
Tablolar ( SET Table.other_table_id = @NewValue) arasındaki bağlantıyı düzenliyorsanız, ON deyimini şöyle bir şeye değiştirinON Table.id = @IdToEdit AND other_table.id = @NewValue
Trisped

11
@RogerRay, bu soru Microsoft SQL Server hakkında. Ne yazık ki, çeşitli SQL uygulamaları arasındaki sözdizimi değişiklik gösterebilir.
Charles Wood

2
@CharlesWood evet. Aynı sorum MySQL'de var. Birisi MySQL'e nasıl uygulanacağını ve herkesle nasıl paylaşılacağını bilmek harika olurdu. Eminim birçok insan MySQL sürüm çözümü arıyor
Roger Ray

1
Sette takma adı nasıl kullanabilirim? güncelleme tablo seti a.col1 = b.col2 tablosundan a.id = b.id üzerinde bir iç birleştirme table2 b; Bunun yerine a.id = b.id üzerinde tablodan bir iç birleştirme table2 b table.col1 = b.col2 güncelleştirme tablo kümesi kullanmak zorunda;
ThinkCode

11
Biraz ilgili, ben yürütmeden önce güncellenecek verileri görebilmek için sık sık UPDATE sorgularımı SELECT deyimleri olarak yazmak istiyorum. Sebastian bunun için bir tekniği son blog yazısında ele alıyor: sqlity.net/en/2867/update-from-select
dennislloydjr

777

SQL Server 2008'de (veya daha iyisi) şunu kullanın: MERGE

MERGE INTO YourTable T
   USING other_table S 
      ON T.id = S.id
         AND S.tsql = 'cool'
WHEN MATCHED THEN
   UPDATE 
      SET col1 = S.col1, 
          col2 = S.col2;

Alternatif:

MERGE INTO YourTable T
   USING (
          SELECT id, col1, col2 
            FROM other_table 
           WHERE tsql = 'cool'
         ) S
      ON T.id = S.id
WHEN MATCHED THEN
   UPDATE 
      SET col1 = S.col1, 
          col2 = S.col2;

122
MERGE"Yukarı Çıkan" kayıtlar için de kullanılabilir; yani UPDATEeşleşen kayıt varsa INSERTyeni maç bulunmazsa yeni kayıt olur
brichins

16
Bu benim için eşdeğer güncelleme ... join deyiminden yaklaşık 10 kat daha hızlıydı.
Paul Suart

17
MERGE, SİLMEK için de kullanılabilir. Ancak HEDEF tablosu uzak tablo olamayacağından MERGE'ye dikkat edin.
Möoz

24
Böcekleri birleştir: mssqltips.com/sqlservertip/3074/…
Simon D

16
@SimonD: herhangi bir SQL Server anahtar kelimesini seçin ve hata bulacaksınız. Puanınız? Ben ilişkili Daha fazla hata (ve çok daha temel olanlar) vardır bahis UPDATEdaha MERGE, millet sadece onlarla yaşamayı öğrenmiş ve onlar manzara ( 'özellikler') parçası olurlar. Blogların UPDATEbloktaki yeni çocuk olduğu zaman var olmadığını düşünün .
oneday3

673
UPDATE YourTable 
SET Col1 = OtherTable.Col1, 
    Col2 = OtherTable.Col2 
FROM (
    SELECT ID, Col1, Col2 
    FROM other_table) AS OtherTable
WHERE 
    OtherTable.ID = YourTable.ID

7
Şimdiye kadar en basit! Ancak , iç SELECT öğesinden kimlik alanını eksik . WHERE yan tümcesinin çalışması için buna ihtiyacınız olacak
John Doherty

12
Bu neredeyse bir kez öğrenmek, her yerde yürütmek anlamına gelir hemen hemen tüm DBMS üzerinde çalışma eğilimi olacaktır. Bu sizin için performanstan daha önemliyse bu yanıtı tercih edebilirsiniz, özellikle de güncellemeniz bazı verileri düzeltmek için bir kapalı ise.
Alan Macdonald

2
İlk tabloyu ikinci tablodan toplamalarla ayarlamanız gerekiyorsa, toplamaları seçemediğiniz gibi SET Table_A.col1 = SUM(Table_B.col1)(veya başka bir toplama işlevi) seçme alt sorgusuna koyabilirsiniz . Robin Day'in bu amaca cevapından çok daha iyi.
Jason S

280

Robin'in aşağıdakilere mükemmel cevabını değiştirirdim :

UPDATE Table
SET Table.col1 = other_table.col1,
 Table.col2 = other_table.col2
FROM
    Table
INNER JOIN other_table ON Table.id = other_table.id
WHERE
    Table.col1 != other_table.col1
OR Table.col2 != other_table.col2
OR (
    other_table.col1 IS NOT NULL
    AND Table.col1 IS NULL
)
OR (
    other_table.col2 IS NOT NULL
    AND Table.col2 IS NULL
)

WHERE deyimi olmadan, etkilenmesi gerekmeyen satırları bile etkileyeceksiniz, bu da (muhtemelen) gerçekten tetiklenmemesi gereken dizin yeniden hesaplamasına veya yangın tetikleyicilerine neden olabilir.


7
Bu, hiçbir sütunun boş bırakılamadığını varsayar.
Martin Smith

4
Haklısın, örneği elle yazıyordum. Bununla başa çıkmak için where ifadesine üçüncü ve dördüncü bir madde ekledim.
quillbreaker

46
WHERE EXISTS(SELECT T1.Col1, T1.Col2 EXCEPT SELECT T2.Col1, T2.Col2))daha özlü.
Martin Smith

5
İfadede bu ikisini de nerede cümlesi içermemelidir? (other_table.col1 null ve table.col1 null değil) veya (other_table.col2 null ve table.col2 null değil)
Barka

4
Hedefteki boş değerleri kaynaktan boş değerlerle değiştirmek isteyip istemediğinize bağlıdır. Sık sık bilmiyorum. Ama eğer yaparsanız, Martin nerede fıkra inşaatı kullanmak en iyi şeydir.
Quillbreaker

204

Tek yön

UPDATE t 
SET t.col1 = o.col1, 
    t.col2 = o.col2
FROM 
    other_table o 
  JOIN 
    t ON t.id = o.id
WHERE 
    o.sql = 'cool'

165

Henüz bahsedilmeyen bir başka olasılık, SELECTifadenin kendisini bir CTE'ye yerleştirip CTE'yi güncellemektir.

;WITH CTE
     AS (SELECT T1.Col1,
                T2.Col1 AS _Col1,
                T1.Col2,
                T2.Col2 AS _Col2
         FROM   T1
                JOIN T2
                  ON T1.id = T2.id
         /*Where clause added to exclude rows that are the same in both tables
           Handles NULL values correctly*/
         WHERE EXISTS(SELECT T1.Col1,
                             T1.Col2
                       EXCEPT
                       SELECT T2.Col1,
                              T2.Col2))
UPDATE CTE
SET    Col1 = _Col1,
       Col2 = _Col2

Bu, SELECTsonuçları akılcı hale getirmek için ifadeyi ilk önce kendi başına çalıştırmanın kolay olmasının avantajına sahiptir , ancak kaynak ve hedef tablolarda aynı şekilde adlandırılmışlarsa yukarıdaki sütunları diğer ad olarak adlandırmanızı gerektirir.

Bu aynı zamanda UPDATE ... FROMdiğer cevapların dördünde gösterilen özel sözdizimiyle aynı sınırlamaya sahiptir . Kaynak tablo, bire çok birleştirmenin birçok tarafındaysa, olası eşleşen birleştirilmiş kayıtlardan hangisinin kullanılacağı belirsizdir Update( MERGEgüncelleştirme girişimi varsa bir hatayı yükselterek önlenen bir sorun) aynı satırı bir kereden fazla).


3
adın bir anlamı var CTEmı?
Raptor

19
@ShivanRaptor - Ortak Tablo İfadesi'nin kısaltmasıdır . Bu durumda sadece rastgele bir takma ad.
Martin Smith

3
Bu, birden çok ;WITH SomeCompexCTE AS (...), CTEAsAbove AS (SELECT T1.Col1,... FROM T1 JOIN SomeComplexCTE...) UPDATE CTEAsAbove SET Col1=_Col1, ...
CTE

117

Kayıt için (ve benim gibi arama diğerleri), MySQL bunu şöyle yapabilirsiniz:

UPDATE first_table, second_table
SET first_table.color = second_table.color
WHERE first_table.id = second_table.foreign_id

En basit mi? Teşekkürler ...
MarcoZen

96

Takma ad kullanma:

UPDATE t
   SET t.col1 = o.col1
  FROM table1 AS t
         INNER JOIN 
       table2 AS o 
         ON t.id = o.id

73

Bunu yapmanın basit yolu:

UPDATE
    table_to_update,
    table_info
SET
    table_to_update.col1 = table_info.col1,
    table_to_update.col2 = table_info.col2

WHERE
    table_to_update.ID = table_info.ID

2
Sizinki daha iyi biçimlendirilmiş; Ayrıca, bir alt seçici kullanırken, sizinki (ve Adrian'ın) diğer formattan daha güvenilir çalışır. Cevabınızı gönderdiğiniz için teşekkür ederiz.
Ben West

20
Bu SQl Server sözdizimi değildir ve SQL sunucusunda çalışmaz
HLGEM

Bu SQL Simya'da harika çalıştı. Belki de soru sordu değil, ama kesinlikle bana yardımcı oldu. :)
JGTaylor

61

Bu, bir güncelleme yapmak için niş bir neden olabilir (örneğin, esas olarak bir prosedürde kullanılır) veya başkaları için açık olabilir, ancak birleştirme kullanmadan güncelleme seçimi deyimi gerçekleştirebileceğiniz de belirtilmelidir ( arasında güncellediğiniz tabloların ortak alanı yoktur).

update
    Table
set
    Table.example = a.value
from
    TableExample a
where
    Table.field = *key value* -- finds the row in Table 
    AND a.field = *key value* -- finds the row in TableExample a

59

İşte başka bir yararlı sözdizimi:

UPDATE suppliers
SET supplier_name = (SELECT customers.name
                     FROM customers
                     WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT customers.name
              FROM customers
              WHERE customers.customer_id = suppliers.supplier_id);

"NEREDE VAR" kullanarak boş olup olmadığını kontrol eder.


52

Bunu yalnızca, güncellemeyi yapmadan önce nelerin güncelleneceğini kontrol edebilmeniz için hızlı bir şekilde yazabilmeniz için ekliyorum.

UPDATE Table 
SET  Table.col1 = other_table.col1,
     Table.col2 = other_table.col2 
--select Table.col1, other_table.col,Table.col2,other_table.col2, *   
FROM     Table 
INNER JOIN     other_table 
    ON     Table.id = other_table.id 

52

Eğer kullanırsanız MySQL yerine SQL Server, sözdizimi şöyledir:

UPDATE Table1
INNER JOIN Table2
ON Table1.id = Table2.id
SET Table1.col1 = Table2.col1,
    Table1.col2 = Table2.col2

50

SQL veritabanında INNER JOIN ile SELECT'ten GÜNCELLEME

En çok oylanan bu yayının çok fazla yanıtı olduğundan, burada da önerilerimi sunacağımı düşündüm. Soru çok ilginç olmasına rağmen, birçok forum sitesinde gördüm ve ekran görüntüleri ile INNER JOIN kullanarak bir çözüm yaptım .

İlk başta schoolold adında bir tablo oluşturdum ve sütun adlarına göre birkaç kayıt ekledim ve yürüttüm .

Sonra eklenen kayıtları görüntülemek için SELECT komutunu çalıştırdım .

Daha sonra schoolnew adında yeni bir tablo oluşturdum ve benzer şekilde yukarıdaki eylemleri gerçekleştirdim.

Sonra, içine eklenen kayıtları görüntülemek için, SELECT komutunu çalıştırıyorum.

Şimdi, Burada üçüncü ve dördüncü satırda bazı değişiklikler yapmak istiyorum, bu eylemi tamamlamak için, INNER JOIN ile UPDATE komutunu çalıştırıyorum .

Değişiklikleri görüntülemek için SELECT komutunu çalıştırıyorum .

UPDATE ifadesiyle INNER JOIN kullanarak tablo schoolold'un üçüncü ve dördüncü kayıtlarının kolayca tablo yenisiyle nasıl değiştirildiğini görebilirsiniz .


43

Ve masaya kendisiyle katılmak istiyorsanız (bu çok sık olmayacak):

update t1                    -- just reference table alias here
set t1.somevalue = t2.somevalue
from table1 t1               -- these rows will be the targets
inner join table1 t2         -- these rows will be used as source
on ..................        -- the join clause is whatever suits you

8
1 ancak ilgili diğer adları gibi kullanılabilir olmalıdır targett1ve sourcet1yerine (veya yanı sıra) bir yorum.
Mark Hurd

42

Aşağıdaki örnek, eski ve yeni değerleri daha fazla güncelleştirme için döndürmek üzere FROM yan tümcesinden sonra bir SELECT deyimi olan türetilmiş bir tablo kullanır:

UPDATE x
SET    x.col1 = x.newCol1,
       x.col2 = x.newCol2
FROM   (SELECT t.col1,
               t2.col1 AS newCol1,
               t.col2,
               t2.col2 AS newCol2
        FROM   [table] t
               JOIN other_table t2
                 ON t.ID = t2.ID) x

41

Üzerinden güncelleme CTE, buradaki diğer yanıtlardan daha okunabilir:

;WITH cte
     AS (SELECT col1,col2,id
         FROM   other_table
         WHERE  sql = 'cool')
UPDATE A
SET    A.col1 = B.col1,
       A.col2 = B.col2
FROM   table A
       INNER JOIN cte B
               ON A.id = B.id

39

SQL Server kullanıyorsanız, bir birleşim belirtmeden bir tabloyu diğerinden güncelleyebilir ve iki wheremaddeyi yan tümceden bağlayabilirsiniz . Bu çok daha basit bir SQL sorgusu yapar:

UPDATE Table1
SET Table1.col1 = Table2.col1,
    Table1.col2 = Table2.col2
FROM
    Table2
WHERE
    Table1.id = Table2.id

25

Burada tüm farklı yaklaşımları birleştiriyoruz.

  1. Güncellemeyi seçin
  2. Ortak bir tablo ifadesiyle güncelleme
  3. Birleştirmek

Örnek tablo yapısı aşağıdadır ve Product_BAK'ten Product table'a güncellenecektir.

Ürün

CREATE TABLE [dbo].[Product](
    [Id] [int] IDENTITY(1, 1) NOT NULL,
    [Name] [nvarchar](100) NOT NULL,
    [Description] [nvarchar](100) NULL
) ON [PRIMARY]

Product_BAK

    CREATE TABLE [dbo].[Product_BAK](
        [Id] [int] IDENTITY(1, 1) NOT NULL,
        [Name] [nvarchar](100) NOT NULL,
        [Description] [nvarchar](100) NULL
    ) ON [PRIMARY]

1. Güncellemeyi seçin

    update P1
    set Name = P2.Name
    from Product P1
    inner join Product_Bak P2 on p1.id = P2.id
    where p1.id = 2

2. Ortak bir tablo ifadesiyle güncelleme

    ; With CTE as
    (
        select id, name from Product_Bak where id = 2
    )
    update P
    set Name = P2.name
    from  product P  inner join CTE P2 on P.id = P2.id
    where P2.id = 2

3. Birleştir

    Merge into product P1
    using Product_Bak P2 on P1.id = P2.id

    when matched then
    update set p1.[description] = p2.[description], p1.name = P2.Name;

Bu Birleştirme ifadesinde, hedefte eşleşen bir kayıt bulamazsanız, ancak kaynakta mevcutsa ve lütfen sözdizimini bulursak ekleyebiliriz:

    Merge into product P1
    using Product_Bak P2 on P1.id = P2.id;

    when matched then
    update set p1.[description] = p2.[description], p1.name = P2.Name;

    WHEN NOT MATCHED THEN
    insert (name, description)
    values(p2.name, P2.description);

23

Diğer yol, türetilmiş bir tablo kullanmaktır:

UPDATE t
SET t.col1 = a.col1
    ,t.col2 = a.col2
FROM (
SELECT id, col1, col2 FROM @tbl2) a
INNER JOIN @tbl1 t ON t.id = a.id

Örnek veri

DECLARE @tbl1 TABLE (id INT, col1 VARCHAR(10), col2 VARCHAR(10))
DECLARE @tbl2 TABLE (id INT, col1 VARCHAR(10), col2 VARCHAR(10))

INSERT @tbl1 SELECT 1, 'a', 'b' UNION SELECT 2, 'b', 'c'

INSERT @tbl2 SELECT 1, '1', '2' UNION SELECT 2, '3', '4'

UPDATE t
SET t.col1 = a.col1
    ,t.col2 = a.col2
FROM (
SELECT id, col1, col2 FROM @tbl2) a
INNER JOIN @tbl1 t ON t.id = a.id

SELECT * FROM @tbl1
SELECT * FROM @tbl2

23
UPDATE TQ
SET TQ.IsProcessed = 1, TQ.TextName = 'bla bla bla'
FROM TableQueue TQ
INNER JOIN TableComment TC ON TC.ID = TQ.TCID
WHERE TQ.IsProcessed = 0

İstediğinizi güncellediğinizden emin olmak için önce seçin

SELECT TQ.IsProcessed, 1 AS NewValue1, TQ.TextName, 'bla bla bla' AS NewValue2
FROM TableQueue TQ
INNER JOIN TableComment TC ON TC.ID = TQ.TCID
WHERE TQ.IsProcessed = 0

22

Daha kısa bir yöntem bile var ve sizin için şaşırtıcı olabilir:

Örnek veri kümesi:

CREATE TABLE #SOURCE ([ID] INT, [Desc] VARCHAR(10));
CREATE TABLE #DEST   ([ID] INT, [Desc] VARCHAR(10));

INSERT INTO #SOURCE VALUES(1,'Desc_1'), (2, 'Desc_2'), (3, 'Desc_3');
INSERT INTO #DEST   VALUES(1,'Desc_4'), (2, 'Desc_5'), (3, 'Desc_6');

Kod:

UPDATE #DEST
SET #DEST.[Desc] = #SOURCE.[Desc]
FROM #SOURCE
WHERE #DEST.[ID] = #SOURCE.[ID];

1
EVET - bilerek KATILIM yoktur ve HAYIR - bu tablo değişkenlerine uygulanamaz.
Bartosz X

1
Sanırım #SOURCE cihazınızda [ID] ile # DESTINATION ile aynı değil, [_id] kullanırsanız, katılmanıza izin verebilirler. "on # DESTINATION.ID = # SOURCE._id. Ya da @tbl gibi bir tablo değişkeni bile kullanalım" PermTable.ID=@memorytbl._id üzerinde. " .
Jenna Leaf

2
Bunun bir SELECT'ten güncelleme ile ne ilgisi var?
Martin Smith

2
Bu aynı fikir ama başka bir yöntem - güncelleme deyiminde JOIN ve WHERE elde etmek için "select" koymak zorunda değilsiniz - SELECT
Bartosz X

19

kullanın:

drop table uno
drop table dos

create table uno
(
    uid int,
    col1 char(1),
    col2 char(2)
)
create table dos
(
    did int,
    col1 char(1),
    col2 char(2),
    [sql] char(4)
)
insert into uno(uid) values (1)
insert into uno(uid) values (2)
insert into dos values (1,'a','b',null)
insert into dos values (2,'c','d','cool')

select * from uno 
select * from dos

YA:

update uno set col1 = (select col1 from dos where uid = did and [sql]='cool'), 
col2 = (select col2 from dos where uid = did and [sql]='cool')

VEYA:

update uno set col1=d.col1,col2=d.col2 from uno 
inner join dos d on uid=did where [sql]='cool'

select * from uno 
select * from dos

Kimlik sütunu adı her iki tabloda da aynıysa, tablo adını güncelleştirilecek tablonun önüne koyun ve seçilen tablo için bir diğer ad kullanın, yani:

update uno set col1 = (select col1 from dos d where uno.[id] = d.[id] and [sql]='cool'),
col2  = (select col2 from dos d where uno.[id] = d.[id] and [sql]='cool')

14

Kabul edilen cevapta:

SET
Table_A.col1 = Table_B.col1,
Table_A.col2 = Table_B.col2

Ekleyeceğim:

OUTPUT deleted.*, inserted.*

Genellikle yaptığım her şeyi bir rulo destekli işlem koymak ve kullanarak "OUTPUT": bu şekilde olmak üzere olan her şeyi görüyorum. Gördüğüm şeyden memnun olduğumda, ROLLBACKiçine değiştiriyorum COMMIT.

Genellikle ne yaptığımı belgelemek gerekir, bu yüzden "results to Text"geri alma sorgusu çalıştırdığınızda seçeneği kullanın ve ben hem komut dosyası hem de ÇIKIŞ sonucu kaydedin. (Tabii ki çok fazla satır değiştirirsem bu pratik değildir)



12

Aşağıdaki çözüm bir MySQL veritabanı için çalışır:

UPDATE table1 a , table2 b 
SET a.columname = 'some value' 
WHERE b.columnname IS NULL ;

12

Bir select deyiminden güncelleme yapmanın diğer yolu:

UPDATE A
SET A.col = A.col,B.col1 = B.col1
FROM  first_Table AS A
INNER JOIN second_Table AS B  ON A.id = B.id WHERE A.col2 = 'cool'

5
Select deyiminden güncelleme yapmanın diğer yolu Diğer cevaplar arasındaki fark nedir? Lütfen cevabınızı detaylandırın. Unutmayın: İyi bir cevap her zaman ne yapıldığını ve bunun neden sadece OP için değil, SO'ya gelecek ziyaretçiler için yapıldığını açıklayacaktır.
B001 ᛦ

Bu yanıt, muhtemelen kod hakkında herhangi bir açıklama yapmadığınız için düşük kaliteli inceleme sırasında ortaya çıktı. Bu kod soruyu cevaplıyorsa, cevabınızdaki kodu açıklayan bir metin eklemeyi düşünün. Bu şekilde, daha fazla oy almanız ve ankete katılan kişinin yeni bir şey öğrenmesine yardımcı olmanız çok daha olasıdır.
lmo

8

Seçenek 1: İç Birleştirmeyi Kullanma:

UPDATE
    A
SET
    A.col1 = B.col1,
    A.col2 = B.col2
FROM
    Some_Table AS A
    INNER JOIN Other_Table AS B
        ON A.id = B.id
WHERE
    A.col3 = 'cool'

2. Seçenek: İlişkili Alt sorgu

UPDATE table 
SET Col1 = B.Col1, 
    Col2 = B.Col2 
FROM (
    SELECT ID, Col1, Col2 
    FROM other_table) B
WHERE 
    B.ID = table.ID

Senin için işe yaradı mı? Tam olarak aynı sorguyu kullandım ama iç birleşim kullanılırken hatalar yaşadım, takma ad çözümlenemedi. Ancak, ilişkili alt sorgu mükemmel çalıştı.
Pratyush Raizada

@PratyushRaizada ne hatası var?
Santhana

Tam hata günlükleri yok ama hata neden olan atama önce A atıfta bulunuluyordu.
Pratyush Raizada

İlişkili alt sorguyu kullandım
pat capozzi

3
UPDATE table1
SET column1 = (SELECT expression1
               FROM table2
               WHERE conditions)
[WHERE conditions];

Bir tabloyu SQL Server'daki başka bir tablodan verilerle güncellerken UPDATE ifadesinin sözdizimi


1

Bundan sql sunucusunda güncelleme için kullanabilirsiniz

UPDATE
    T1
SET
   T1.col1 = T2.col1,
   T1.col2 = T2.col2
FROM
   Table1 AS T1
INNER JOIN Table2 AS T2
    ON T1.id = T2.id
WHERE
    T1.col3 = 'cool'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.