[英]Illegal mix of collations for operation 'UNION' Nodejs Mysql
我正在嘗試獲取用戶使用此 sql 編寫的所有帖子:
'SELECT * FROM users WHERE username=? UNION ALL SELECT * FROM posts WHERE writer_name=?'
我收到這個錯誤:
"Illegal mix of collations for operation 'UNION'"
桌子
CREATE TABLE `claudioBlog`.`users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(100) NOT NULL ,
`email` VARCHAR(100) NOT NULL ,
`age` VARCHAR(100),
`discription` VARCHAR (255),
`ocupation` VARCHAR (100),
`profile_image` VARCHAR (100)
`password` VARCHAR(255) NOT NULL ,
PRIMARY KEY (`id`), UNIQUE (`email`)
) ENGINE = InnoDB
CREATE TABLE posts (
id int(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(50) NOT NULL,
category VARCHAR(50) NOT NULL,
body VARCHAR(2000) NOT NULL,
writer_id VARCHAR(50) NOT NULL,
writer_name VARCHAR(50) NOT NULL,
post_img VARCHAR(100),
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
我有什么要改變的?
你想要一個join
,而不是union
。 據推測, writer_id
是對users(id)
的外鍵引用
SELECT p.*
FROM users u JOIN
posts p
ON p.writer_id = u.id
WHERE u.username = ? ;
注意:如果write_id
確實指的是users(id)
,則將write_name
存儲在posts
是不合適的,除非——出於某種奇怪的原因——它可能因帖子而異,而不是用戶的真實姓名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.