sadece Lets ben, Yani böyle bir şey olurdu tek SET içine bu sonuca birleştirmek gerekirMySQL: Bir açıklamada 2 sütun sonuçlarını birleştiren
R1 R2
| 1 | | 5 |
| 2 | | 6 |
| 3 | | 7 |
| 4 | | 8 |
şöyle ben 2 sonuç kümelerini olduğunu varsayalım Bu: Şu
R3
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
, ben şöyle aa BİRLİĞİ ile yapıyorum:
SELECT c_1 AS result FROM table WHERE c_1=3 OR c_2=3
UNION
SELECT c_2 AS result FROM table WHERE c_1=3 OR c_2=3
Temel olarak, aynı işlemi tablo üzerinde iki kez gerçekleştirmeyi bitiriyorum, Her seferinde farklı satırlar alınıyor. Bunu yapmanın daha verimli bir yolu var mı? Tek bir sütunda sonuca ihtiyacım var, çünkü bu bir IN sınırlamasıdır. Uzun vadede , ne yapmam gerekiyor bu
SELECT name FROM person WHERE person_id IN
(SELECT c_1 AS result FROM table WHERE c_1=3 OR c_2=3
UNION
SELECT c_2 AS result FROM table WHERE c_1=3 OR c_2=3)
tüm bu bulma konusunda gitmek için daha iyi bir yolu var mı? Her türlü yardım kabul edilir. Yerine IN()
alt sorgunun
SQL üzerinde
INNER JOIN
gerçekleştirebilir istenilen sonucu yerine hesaplama yöntemi bildirir. Bunun için 'EXPLAIN' –komutunu kullanın. C_1 seçimlerini r1, c_2 r2 ...' olarak kullanamaz mısınız? Ayrıca, 'result' değişkenini kullanıyor musunuz? – bozdoz
Şahsen Mümkün olduğu sürece IN kullanmamaya özen gösterdim, bence küçük bir masada her zaman küçük bir set olacak. Michael Berkowski'nin cevabı, “iç birleştirme” yi kullanarak tercih ettiğim yoldur. Anahtar olarak kullanmak istediğiniz her şeyde indekslerinizin olduğundan emin olun veya performans için uygun yabancı anahtarlar oluşturun. – Levi