2012-02-09 78 views

Trả lời

9

Từ liên kết mà bạn cung cấp:

GIÁ TRỊ (1, 'một'), (2, 'hai'), (3, 'ba');
Điều này sẽ trả về một bảng gồm hai cột và ba hàng. Đó là một cách hiệu quả tương đương với:
SELECT 1 AS column1, 'one' AS column2
UNION ALL
CHỌN 2, 'hai'
UNION ALL
CHỌN 3, 'ba';

Vì vậy, bạn cần

select * from 
table1, 
(
    SELECT 1 AS val 
    UNION ALL 
    SELECT 2 
    UNION ALL 
    SELECT 3 
)b 
+1

này tương đương với ví dụ của tôi, nhưng có vẻ là rất nhiều làm việc trái ngược với cú pháp Postgres. MySQL có một lựa chọn như vậy không? – crististm

+0

Đó là một chút công việc cần làm vì MySQL không có bất kỳ cú pháp GIÁ TRỊ. Nếu bạn có nhiều giá trị mà bạn cần truy xuất, bạn có thể tạo một thủ tục để phân tách các giá trị của mình bằng dấu tách, chèn chúng vào bảng tạm thời và sau đó chọn chúng đúng cách. Điều đó có dễ dàng hơn cho bạn không? –

+0

Thực ra tôi không muốn lấy các giá trị này. Tôi muốn làm một cái gì đó phức tạp hơn "in" vì vậy tôi sẽ cần chúng trong một bảng tạm thời của một số loại – crististm

2

Đây cũng là một cách để có được xung quanh việc thiếu WITH hỗ trợ trong MySQL:

create temporary table tmp (c int); 

insert into tmp (c) 
values (1), (2), (3); 

select * from tmp; 
+4

Cảm ơn câu trả lời, điều này thật đáng buồn. –

Các vấn đề liên quan